2015-01-15 219 views
1

我想从数据库中创建JSON对象,但有一个复杂的结构。我并不清楚,如何让像“价值”的复杂结构下面的Json string.Help任何人,感谢advance.This是JSON字符串,我想打:如何从java中的数据库中创建JSON对象?

[{"type":"person1","id":null,"values":[[[32.3619,50.9291],[32.3604,50.9644],[32.3446,50.9395]]]}] 

代码我还没有试过。

   Session sess1 = sf.openSession(); 
       Query q = sess1.createQuery("from person"); 
       List l = q.list(); 
       Iterator itr = l.iterator(); 
       JSONArray jArray = new JSONArray(); 
       JSONObject jObj = new JSONObject(); 
       String id = null, lat, lng; 
       while (itr.hasNext()) { 
        Person pobj = (Person) itr.next(); 
        id = pobj.getId().toString(); 
        lat = pobj.getLatitude(); 
        lng = pobj.getLongitude(); 
       } 
       jObj.put("type", "Person1"); 
       jObj.put("id", id); 

       JSONArray jrray = new JSONArray(); 
       jArray.put(jObj); 
       JSONObject jObjDevice = new JSONObject(); 
       jObjDevice.put("", jArray); 
       System.out.println("json object created" + jObjDevice.toString()); 

回答

1

使用jackson ...

import java.io.File; 
import java.io.IOException; 
import java.util.Arrays; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 
import org.codehaus.jackson.JsonGenerationException; 
import org.codehaus.jackson.map.JsonMappingException; 
import org.codehaus.jackson.map.ObjectMapper; 

public class MapToJsonExample { 
    private static final String pathToJsonResult = "example.json"; 

    public static void main(String[] args) { 
     ObjectMapper objectMapper = new ObjectMapper(); 

     Map<String, Object> mapObject = new HashMap<String, Object>(); 

     mapObject.put("type", "person1"); 
     mapObject.put("id", null); 

     List<Object> myList = new ArrayList<>(); 
     List<Double> point1 = Arrays.asList(32.3619,50.9291); 
     List<Double> point2 = Arrays.asList(32.3446,50.9395); 
     List<List<Double>> innerList = new ArrayList<>(); 
     List<List<List<Double>>> outerList = new ArrayList<>(); 
     innerList.add(point1); 
     innerList.add(point2); 
     outerList.add(innerList); 
     mapObject.put("values", outerList); 

     try { 
      objectMapper.writeValue(new File(pathToJsonResult), mapObject); 
     } catch (JsonGenerationException e) { 
      e.printStackTrace(); 
     } catch (JsonMappingException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

在这里,使用的是Windows和Java7,
编译..

javac -cp .;jackson-all-1.9.11.jar MapToJsonExample.java 

运行它...

java -cp .;jackson-all-1.9.11.jar MapToJsonExample 

瞧!

type example.json 
{"values":[[[32.3619,50.9291],[32.3446,50.9395]]],"id":null,"type":"person1"} 
+0

然后你可以给我一些有用的链接或帮助像“价值”这样的结构:[[[32.3619,50.9291],[32.3604,50.9644],[32.3446,50.9395]]]}]被构建。我是json的新手,我必须很快完成它:( – dolly 2015-01-15 18:28:27

+0

我可能不得不尝试一些,我认为你也可以尝试自己做。另一种方法在这里说明http://examples.javacodegeeks.com/core-java/json/jackson/convert-java-map-to-from-json-using-jackson-example/ – unigeek 2015-01-15 18:50:10

+0

使用Jackson的示例进行了更新。outerList的声明非常可怕,IMO,但它应该适合账单。 – unigeek 2015-01-15 21:55:55

0

,如果你用java然后作出一个模态类相同的数据库表字段和结果集分贝转换为模式类....莫代尔类是java的实体.....

基于该Java实体使用gson [com.google.code.gson] lib并将其转换...

你只是在那里看到很多的例子。

0

我鼓励你避免所有这些样板代码,并使用JPA和框架如杰克逊或类似的。业务应用程序开发人员不应该浪费时间在这些基础设施上:))

0

我想你正在使用像MySQL这样的关系数据库。要以对象形式检索记录,您可以利用Hibernate ORM。你可以在互联网上找到大量的教程。

相关问题