JAVA创建不带引号的Json数组
我有一个嵌套的json,其中一个元素是整数数组 我希望得到如下输出:JAVA创建不带引号的Json数组,java,arrays,json,Java,Arrays,Json,我有一个嵌套的json,其中一个元素是整数数组 我希望得到如下输出: JsonArrayBuilder arguments = Json.createArrayBuilder().add(Json.createObjectBuilder().add("array", Json.createArrayBuilder().add(1).add(2).add(3)))); {“参数”:[{“数组”:[1,2,3]}]} 但我一直收到这样引用的数组: JsonArrayBuilder argument
JsonArrayBuilder arguments = Json.createArrayBuilder().add(Json.createObjectBuilder().add("array", Json.createArrayBuilder().add(1).add(2).add(3))));
{“参数”:[{“数组”:[1,2,3]}]}
但我一直收到这样引用的数组:
JsonArrayBuilder arguments = Json.createArrayBuilder().add(Json.createObjectBuilder().add("array", Json.createArrayBuilder().add(1).add(2).add(3))));
{“参数”:[{“数组”:“[1,2,3]”}]}
这是我的密码:
import javax.json.Json;
import javax.json.JsonArrayBuilder;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
JsonArrayBuilder arguments = Json.createArrayBuilder().add(Json.createObjectBuilder().add("array", Arrays.toString(new int[] {1,2,3})));
String json = Json.createObjectBuilder().add("arguments", arguments).build().toString();
System.out.println(json);
}
}
编辑
多亏了乔恩·斯基特,我才做到了这一点
int[] ints = {1, 2, 3};
JsonArrayBuilder arrayBuilder = Json.createArrayBuilder();
for (int i : ints) {
arrayBuilder.add(i);
}
JsonArrayBuilder arguments =
Json.createArrayBuilder().add(Json.createObjectBuilder().add("array", arrayBuilder.build()));
虽然我认为可能有一种更好看的方式,
谢谢您正在添加一个名为“数组”的对象,并告诉对象生成器它是一个字符串:
Arrays.toString(new int[] {1,2,3})
在这里传递一个字符串,您如何期望对象生成器知道它应该是一个集合而不是字符串?它只是一个哑VM,如果它看到字符串,它会认为它是一个字符串,即使该字符串是数组的字符串版本。如果虚拟机看到字符串“ferrari”,它仍然认为它是字符串而不是真正的ferrari,对吗?;)
您要做的是在右侧,而不是Arrays.toString创建另一个数组生成器,将所有int对象逐个添加到其中,并添加结果对象,而不是“Arrays.toString(new int[]{1,2,3})”大致如下:
JsonArrayBuilder arguments = Json.createArrayBuilder().add(Json.createObjectBuilder().add("array", Json.createArrayBuilder().add(1).add(2).add(3))));
你要经过建筑工人。首先尝试调用
build()
。为什么要这样做?您知道您可能会以无效的json结束,对吗?Arrays.toString(new int[]{1,2,3})
将为您完成此操作-尝试其他操作。提示:您正在创建一个数组生成器,但只调用一次add
。这将创建一个包含一个元素的数组。您需要一个包含三个元素的数组,因此需要调用add
三次。类似的问题:很明显,您会将整个内容放入一个自动执行该操作的方法中,而不是将数据内联并硬编码到代码中:P@HopefullyHelpful我希望OP明白这一点,他的代码只是为了展示