【问题标题】:how to create json object with multiple array within it using org.json.JSONObject package in java?如何使用 java 中的 org.json.JSONObject 包创建包含多个数组的 json 对象?
【发布时间】:2017-05-10 09:24:04
【问题描述】:

我想创建 json 对象, {"jsonName":[{"id":"1","name":"abc"},{"id":2,"name":"pqr"}]} “jsonName”从数据库中获取数据,我想从该数据创建对象。 我想在我们创建之后用“id”更新那个json对象的一些值。

假设我从 java 运行查询..

String selectStr = "select * from emp";
ResultSet rs = ps.executeQuery ();
while(rs.next())
{
.....
}

我正在获取这样的数据,并希望创建一个存储所有数据行的 json 对象。 有人可以帮我..我是 json 对象的新手。

【问题讨论】:

    标签: java json org.json


    【解决方案1】:

    使用 org.json 库:

    JSONArray elements  = new JSONArray();
    JSONObject rootJson = new JSONObject();
    String selectStr    = "select * from emp";
    try
    {
        JSONArray elements  = null; // to prevent query returning empty resultset
        JSONArray el        = new JSONArray();
    
        ResultSet rs = ps.executeQuery();
        while(rs.next())
        {
            JSONObject el = new JSONObject();
            el.put("id", rs.getInt(1));
            el.put("name", rs.getString(2));
            elements.put(element);
        }
    
        rootJson.put("jsonName", elements);
    
    }catch(Exception e)
    {
        e.printStackTrace();
    }
    

    【讨论】:

      【解决方案2】:

      你可以试试quick-json。可用于将 Java 对象转换为其 JSON 表示形式。它还可用于将 JSON 字符串转换为等效的 Java 对象。 quick-json 可以处理任意 Java 对象。

      【讨论】:

        【解决方案3】:

        当使用诸如 gson 之类的库时(请参阅:https://github.com/google/gson),这样做是一项微不足道的任务。您可以简单地以类的形式定义一个结构,如下所示:

        public class JsonObj {
            public List<JsonItem> jsonName;
        }
        
        public class JsonItem {
            public int id;
            public String name;
        }
        

        然后,您可以使用 gson 将您的对象序列化为 json(详尽的示例,但您明白了):

        Gson gson = new Gson();
        JsonObj obj = new JsonObj();
        obj.jsonName = new ArrayList<String>();
        
        String selectStr = "select * from emp";
        ResultSet rs = ps.executeQuery();
        while(rs.next())
        {
            JsonItem item = new JsonItem();
            item.id = rs.getInt(1); //or whatever column index goes here
            item.name = rs.getString(2); //or whatever column index goes here
            obj.jsonName.Add(item);
        }
        String json = gson.toJson(obj);
        

        json 对象现在将包含字符串格式的序列化 json。

        【讨论】:

        • 你创建 JsonItem 两次,如果我们有数据 100 次呢?我们可以使用循环创建这个吗?请告诉我
        • 当然可以,你可以随心所欲。尽管此时最好将数组替换为列表(两者都序列化为数组,但使用数组列表比创建所有对象的数组更容易)。我会相应地在帖子中更新我的代码。
        • 感谢@nbokmans 的帮助。但是,如果我们要从数据库中获取 id,name 的数据,那么要做哪些更改?你能给我一些代码吗?
        • 这取决于您如何从数据库中获取数据。这是一个单独的问题/功能。您能否更新您的问题以显示数据库中的一些示例数据以及如何获取这些数据?
        • 嘿,我已经更新了我的问题,你能看看吗?
        猜你喜欢
        • 2020-09-03
        • 2021-09-22
        • 2010-12-31
        • 2022-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-27
        • 1970-01-01
        相关资源
        最近更新 更多