在 JsonArray 中解析 JsonArray(嵌套)
Parsing JsonArray inside JsonArray(nested)
我调用了 REST 服务,它 returns 一个 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,我在互联网上发现了 3 种类型的 .jar 文件并且完全混淆了。
我正在使用 org.json 包,要阅读有关 org.json 的更多信息,请单击 here
示例代码
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
这只是一个示例,您可以根据需要进行重构。
我调用了 REST 服务,它 returns 一个 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,我在互联网上发现了 3 种类型的 .jar 文件并且完全混淆了。
我正在使用 org.json 包,要阅读有关 org.json 的更多信息,请单击 here
示例代码
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
这只是一个示例,您可以根据需要进行重构。