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

JAVA创建不带引号的Json数组

JAVA创建不带引号的Json数组

慕斯王 2021-09-29 15:23:05
我有一个嵌套的 json,它的一个元素是一个整数数组。我想得到这样的输出:{ "arguments" : [ { "array": [1, 2, 3] } ] }但我一直在这样的引号中接收数组:{ "arguments" : [ { "array" : "[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);    }}编辑感谢 Jon Skeet,我设法做到了这一点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()));虽然我认为可能有更好看的方式,谢谢
查看完整描述

1 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

您正在添加一个名为“array”的对象,并告诉对象构建器它是一个字符串:

Arrays.toString(new int[] {1,2,3})

您在这里传递一个字符串,您如何期望对象生成器知道它应该是一个集合而不是字符串?它只是一个愚蠢的虚拟机,如果它看到字符串它认为它是一个字符串,即使该字符串是数组的字符串版本。如果 VM 看到字符串“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))));


查看完整回答
反对 回复 2021-09-29
  • 1 回答
  • 0 关注
  • 348 浏览

添加回答

举报

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