来自java中数据库的Json对象

时间:2011-07-20 09:05:40

标签: java json

任何人都可以帮我如何从数据库创建JSON对象吗?

这就是 JSON输出应该是这样的:

{“devicelist”:{
    “device”: [
    {“id”: “01”, “type”: “CAM”, “name”: “Livingroom”}
    {“id”: “15”, “type”: “CAM”, “name”: “Kitchen”}
]
}}

这是我的代码

 if (reg!=null)
 {

     try
                  {
                     con = ds.getConnection();
                     Statement select = con.createStatement();
                    ResultSet result=select.executeQuery("Select type,name,demo from register_device");  
                      while (result.next())
                      {
                         String  type_json=result.getString("type");
                         String name_json=result.getString("name");
                         String id_json=result.getString("demo");
                         JSONArray arrayObj=new JSONArray();

                      }
                  }
                  catch(Exception e)
                  {

                  }
      }

我可以从数据库中获取所选的类型,名称,演示

我不知道如何启动JSON编码。

4 个答案:

答案 0 :(得分:8)

如果要从数据库中提取数据并自己构造JSON对象,可以执行以下操作:

JsonArray jArray = new JsonArray();
while (result.next())
{
    String  type_json=result.getString("type");
    String name_json=result.getString("name");
    String id_json=result.getString("demo");
    JsonObject jObj = new JsonObject();
    jobj.put("id", id_json);
    jobj.put("type", type_json);
    jobj.put("name", name_json);
    jArray.put(jObj);
}

JsonObject jObjDevice = new JsonObject();
jObjDevice.put("device", jArray);
JsonObject jObjDeviceList = new JsonObject();
jObjDevice.put("devicelist", jObjDevice );

现在jObjDeviceList包含所有数据。

答案 1 :(得分:0)

使用jOOQ,您可以从数据库中生成类似的JSON列表:

String json = create.select(TYPE, NAME, DEMO)
                    .from(REGISTER_DEVICE)
                    .fetch()
                    .formatJSON();

JSON字符串如下所示:

{fields:["TYPE","NAME","DEMO"],
 records:[["01","CAM","Livingroom"],["15","CAM","Kitchen"]]}

这不完全是您在问题中所要求的,但也许您不依赖于您建议的确切JSON格式?此外,您可以稍后转换该JSON对象。

在此处查看更多信息:

http://sourceforge.net/apps/trac/jooq/wiki/Manual/ADVANCED/Export

答案 2 :(得分:0)

如果您有Device个对象,json-lib可以使用get()方法将对象序列化为JSON。

import java.util.*;
import net.sf.json.*;

public class JsonEncode {
    public static void main(String[] args) throws Exception {
        Device d1 = new Device("01", "CAM", "LivingRoom");
        Device d2 = new Device("15", "CAM", "Kitchen");

        List<Device> devices = new ArrayList<Device>(Arrays.asList(d1, d2));

        JSONArray serializedDevices = JSONArray.fromObject(devices);
        JSONObject jsonDevices = new JSONObject();
        jsonDevices.put("devices", serializedDevices);

        JSONObject json = new JSONObject();
        json.put("deviceList", jsonDevices);
        System.out.println(json);
    }

    public static class Device {
        Device(String id, String type, String name) {
            this.id = id;
            this.type = type;
            this.name = name;
        }
        private String id;
        public String getId() { return id; }
        private String type;
        public String getType() { return type; }
        private String name;
        public String getName() { return name; }
    }
}

保存为:JsonEncode.java

编译:

javac -cp json-lib-2.4-jdk15.jar JsonEncode.java

执行时(注意:classpath有DOS分隔符):

java -cp .;json-lib-2.4-jdk15.jar;commons-lang-2.6.jar;commons-logging-1.1.1.jar;commons-collections-3.2.1.jar;ezmorph-1.0.6.jar;commons-beanutils-1.8.0.jar JsonEncode

依赖关系:

答案 3 :(得分:0)

if