JAVA中JsonObjects的JsonObject

我有一个JSONObject完整的JSONobjects,我需要将它们中的每一个提取到一个新的中JSONObject,以便我可以单独操作它们中的每一个,但我真的不知道该怎么做。我的代码是这样的:


public void loadBodies(InputStream in) {


JSONObject jsonInput= new JSONObject(new JSONTokener(in));


JSONObject jo2 = jsonInput.getJSONObject("bodies"); //probably incorrect

for(JSonObject j: jo2) b.create(j); //i need to apply the create method to all the JSONObjects

想象这样的 JSON


{'bodies': [

        {

            'total': 142250.0, 

            '_id': 'BC'

        }, 

        {

            'total': 210.88999999999996,

             '_id': 'USD'

        }, 


        {

            'total': 1065600.0, 

            '_id': 'TK'

        }

        ]

}

我需要将JSONObject键下的所有 s提取bodies到一个新的集合中JSONObjects,以便我可以对它们进行操作。所以基本上,循环提取它们,但我不知道如何。


慕沐林林
浏览 140回答 2
2回答

神不在的星期二

根据您的示例,bodies是一个 JSON 数组。所以使用JSONArray库org.json:json来迭代数组的内容:String&nbsp; &nbsp; &nbsp;json&nbsp; &nbsp; &nbsp; = "{\"bodies\": [{\"total\": 142250.0, \"_id\": \"BC\"}]}";JSONObject jsonInput = new JSONObject(new JSONTokener(new StringReader(json)));JSONArray&nbsp; array&nbsp; &nbsp; &nbsp;= jsonInput.getJSONArray("bodies");for (int i = 0; i < array.length(); i++) {&nbsp; &nbsp; JSONObject obj = array.getJSONObject(i);&nbsp; &nbsp; &nbsp;// implement here your logic on obj}

子衿沉夜

您可以这样做并根据您的要求操作每个值。每次在对象中找到任何 JSONObject 或 JSONArray 时,都会递归调用此方法。用于操作特定键值的 handleValue() 方法。public void handleJSON(Object input, Map<String,Object> result ){if (input instanceof JSONObject) {&nbsp; List < String > keys = new ArrayList < > (((JSONObject) input).keySet());&nbsp; for (String key: keys) {&nbsp; &nbsp; if (!(((JSONObject) input).get(key) instanceof JSONArray))&nbsp; &nbsp; &nbsp; if (((JSONObject) input).get(key) instanceof JSONObject) {&nbsp; &nbsp; &nbsp; &nbsp; handleJSONObject(((JSONObject) input).get(key), map);&nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; Object value = ((JSONObject) input).get(key);&nbsp; &nbsp; &nbsp; &nbsp; ((JSONObject) input).put(key, handleValue(value, map));&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; else&nbsp; &nbsp; &nbsp; handleJSONObject(new JSONArray(((JSONObject) input).get(key).toString()), map);&nbsp; }}if (input instanceof JSONArray) {&nbsp; for (int i = 0; i < ((JSONArray) input).length(); i++) {&nbsp; &nbsp; JSONObject jsonObject = ((JSONArray) input).getJSONObject(i);&nbsp; &nbsp; handleJSONObject(jsonObject, map);&nbsp; }}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java