为了账号安全,请及时绑定邮箱和手机立即绑定

JAVA中JsonObjects的JsonObject

JAVA中JsonObjects的JsonObject

慕沐林林 2022-07-20 10:35:19
我有一个JSONObject完整的JSONobjects,我需要将它们中的每一个提取到一个新的中JSONObject,以便我可以单独操作它们中的每一个,但我真的不知道该怎么做。我的代码是这样的:public void loadBodies(InputStream in) {JSONObject jsonInput= new JSONObject(new JSONTokener(in));JSONObject jo2 = jsonInput.getJSONObject("bodies"); //probably incorrectfor(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,以便我可以对它们进行操作。所以基本上,循环提取它们,但我不知道如何。
查看完整描述

2 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

根据您的示例,bodies是一个 JSON 数组。所以使用JSONArray库org.json:json来迭代数组的内容:


String     json      = "{\"bodies\": [{\"total\": 142250.0, \"_id\": \"BC\"}]}";


JSONObject jsonInput = new JSONObject(new JSONTokener(new StringReader(json)));

JSONArray  array     = jsonInput.getJSONArray("bodies");

for (int i = 0; i < array.length(); i++) {

    JSONObject obj = array.getJSONObject(i);

     // implement here your logic on obj

}


查看完整回答
反对 回复 2022-07-20
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

您可以这样做并根据您的要求操作每个值。每次在对象中找到任何 JSONObject 或 JSONArray 时,都会递归调用此方法。用于操作特定键值的 handleValue() 方法。


public void handleJSON(Object input, Map<String,Object> result ){

if (input instanceof JSONObject) {

  List < String > keys = new ArrayList < > (((JSONObject) input).keySet());

  for (String key: keys) {

    if (!(((JSONObject) input).get(key) instanceof JSONArray))

      if (((JSONObject) input).get(key) instanceof JSONObject) {

        handleJSONObject(((JSONObject) input).get(key), map);

      } else {

        Object value = ((JSONObject) input).get(key);

        ((JSONObject) input).put(key, handleValue(value, map));

      }

    else

      handleJSONObject(new JSONArray(((JSONObject) input).get(key).toString()), map);

  }


}

if (input instanceof JSONArray) {

  for (int i = 0; i < ((JSONArray) input).length(); i++) {

    JSONObject jsonObject = ((JSONArray) input).getJSONObject(i);

    handleJSONObject(jsonObject, map);

  }

}

}


查看完整回答
反对 回复 2022-07-20
  • 2 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信