如何在java中从数据库创建JSON对象?

时间:2015-01-15 17:43:12

标签: java json

我想从数据库中创建JSON对象,但有一个复杂的结构。我不清楚如何制作复杂的结构,如"价值观"在关注Json string.Help任何人,提前谢谢。这是我想要的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());

4 个答案:

答案 0 :(得分: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"}

答案 1 :(得分:0)

如果使用java,那么使一个模态类与数据库表字段相同,并将db的结果集转换为该模态类....模态类是java实体.....

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

你只是在那里搜索了很多例子。

答案 2 :(得分:0)

我鼓励你避免使用所有这些样板代码并使用JPA和像Jackson这样的框架。业务应用程序开发人员不应该浪费时间在这些基础架构上:)))

答案 3 :(得分:0)

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