[我有一些代码来创建一个JSON数组。在此代码中,我将一些值传递给x
,y
,z
在一个看起来像这样的循环中。
JSONArray list = new JSONArray();
String jsonText = null;
for (int j = 0; j < 4; j++) {
list.add(new Integer(x));
list.add(new Integer(y));
list.add(new Integer(z));
jsonText = list.toString();
}
System.out.print(jsonText);
这样可以输出
[1234,245,10,312,234,122,1234,67788,345,235,001,332]
如何在这样的单个数组中获取这些值?
[[1234,245,10],[312,234,122],[1234,67788,345],[235,001,332]]]我得到了这个问题的答案,需要回答以下问题。
我使用了以下解决方案之一。 感谢你们的回复。
现在我得到了JSON合成嵌套数组,看起来像这样
[
[[1234,245,10],[312,234,122],[1234,67788,345],[235,001,332]],
[[1234,245,10],[312,234,122],[1234,67788,345],[235,001,332],[1234,67788,3450]],
[[1234,245,10],[312,234,122],[1234,67788,345],[235,001,332],[1234,67788,34534]]]
所以我有一个包含三个数组的大数组(有时可能是2个或三个以上的数组),这三个数组中的每一个都包含一些数组,在上面这个例子中
相反的程序是什么?我的意思是如果我想要这些数组的值。我的表现方式与此相同。使用JSON JSONArray list = new JSONArray(); list.get()这个get方法会给我什么我需要的吗? 我使用了org.json Java API。
感谢朋友们一直帮助我。
答案 0 :(得分:4)
只需将其放入另一个JSONArray
。
JSONArray array = new JSONArray();
array.add(list);
String jsonText = array.toString();
更新:根据您的评论:
抱歉,输出就是这样的
[1234,245,10,312,234,122,1234,67788,345,235,001,332]
请告诉我们如何获得上述输出
[1234,245,10][312,234,122][1234,67788,345][235,001,332]
有几种方法:
连接到jsonString
。
String jsonText = ""; // Start with empty string.
for (int j = 0; j < 4; j++) {
JSONArray list = new JSONArray(); // Create new on each iteration.
list.add(new Integer(x));
list.add(new Integer(y));
list.add(new Integer(z));
jsonText += list.toString(); // += concatenates to existing string.
}
System.out.print(jsonText);
由于字符串在循环中使用+=
连接是内存占用和缓慢,而是使用StringBuilder
。
StringBuilder jsonText = new StringBuilder();
for (int j = 0; j < 4; j++) {
JSONArray list = new JSONArray();
list.add(new Integer(x));
list.add(new Integer(y));
list.add(new Integer(z));
jsonText.append(list.toString();
}
System.out.print(jsonText.toString());
答案 1 :(得分:2)
我怀疑你想要的是一个语法正确的嵌套整数数组的JSON数组(原始帖子请求无效的JSON)。如果没有,请使用@BalusC's answer。
要获取包含子数组的数组,只需将子数组创建为int[]
数组,然后将它们直接添加到主JSONArray
。
public int[] getThreeValues() { // example
Random r = new Random();
return new int[] { r.nextInt(100), r.nextInt(100), r.nextInt(100) };
}
public void execute() {
JSONArray master = new JSONArray();
for (int j=0; j<4; j++) {
master.put(getThreeValues());
}
System.out.println(master);
}
<强>结果:强>
[[3,13,37],[24,4,64],[61,2,1],[97,13,86]]
注意:我不确定您使用的是哪个JSON库,因此我使用org.json Java API,它使用put(...)
而不是add(...)
。此外,该特定库支持将int []数组直接添加到JSONArray - 您可能不会,在这种情况下,您需要构建嵌套的JSONArrays并将它们添加到主服务器。
答案 2 :(得分:0)
您始终可以将列表放在JSONArray
中e.g。
JSONArray list = new JSONArray();
String jsonText = null;
for (int j = 0; j < 4; j++) {
list.add(new Integer(x));
list.add(new Integer(y));
list.add(new Integer(z));
}
JSONArray finalList = new JSONArray();
finalList.put(0, list);
jsonText = finaList.toString();
System.out.print(jsonText);
或(根本不推荐)破解你的输出,
e.g。
jsonText += "[" + jsonText + "]";
System.out.print(jsonText);