在Jsonarray(嵌套)内解析JSONARRAY



我打电话给休息服务,它返回JSON字符串,看起来像:

{
   "head":[
          ""head1"", 
          "head2",
          "head3"
    ],
   "tail":[
            [
               "tail1",
               "tail2",'
               "tail3"
            ],
            [
               "tail1a",
               "tail2a", 
               "tail3a"
            ],
            ....and so on till n.
          ]
}

我想以这样的方式解析JSON,我得到了(键,值)对。即head1=tail1, head2=tail2, head1=tail1a, head2=tail2a等。

有没有办法实现这一目标?我还建议我使用哪种JSON,我在Internet上找到了3种类型的.jar文件,并且完全混淆了。

我正在使用org.json软件包,以了解有关org.json的更多信息。

示例代码

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class Example {
public static void main(String[] args) {
    String jsonString = "{"head":["head1","head2","head3"],"tail": [["tail1","tail2","tail3"],["tail1a","tail2a","tail3a"]]}";
    try {
        JSONObject mainJsonObject = new JSONObject(jsonString);
        JSONArray headJsonArray = mainJsonObject.getJSONArray("head");
        JSONArray tailJsonArray = mainJsonObject.getJSONArray("tail");
        Map<String, List<String>> keyValue = new HashMap<String, List<String>>();
        int index = 0;
        for (int i = 0; i < headJsonArray.length(); i++) {
            String head = headJsonArray.getString(i);
            List<String> values = new ArrayList<String>();
            for (int j = 0; j < tailJsonArray.length(); j++) {
                JSONArray anotherTailArray = tailJsonArray.getJSONArray(j);
                values.add(anotherTailArray.getString(index));
            }
            keyValue.put(head, values);
            index++;
        }
        for (String key: keyValue.keySet()) {
            List<String> values = keyValue.get(key);
            for (int i = 0; i < values.size(); i++) {
                System.out.println(key + " = " + values.get(i));
            }
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
}
}

输出

head1 = tail1
head1 = tail1a
head2 = tail2
head2 = tail2a
head3 = tail3
head3 = tail3a

这只是一个例子,您可以根据需要进行重构。

最新更新