Java JSONArray使用额外的转义放置数据
我正在使用代码:Java JSONArray使用额外的转义放置数据,java,json,rest,Java,Json,Rest,我正在使用代码: JSONArray jsonArray = new JSONArray(); jsonArray.put(1, "ADMIN"); jsonArray.put(2, "DATA"); JSONObject jsonObj = new JSONObject(); jsonObj.put("slice_roles", jsonArray); jsonObj.put("admin_slice", "10.143.229.238"); jsonObj.put("slice_addres
JSONArray jsonArray = new JSONArray();
jsonArray.put(1, "ADMIN");
jsonArray.put(2, "DATA");
JSONObject jsonObj = new JSONObject();
jsonObj.put("slice_roles", jsonArray);
jsonObj.put("admin_slice", "10.143.229.238");
jsonObj.put("slice_address", "10.143.229.238");
String requestJson = jsonObj.toString();
我得到的输出是:
[{"slice_roles":[\"ADMIN\",\"UI\"],"admin_slice":"10.143.229.238","slice_address":"10.143.229.238"}]
我想得到:
[{"slice_roles":["ADMIN","UI"],"admin_slice":"10.143.229.238","slice_address":"10.143.229.238"}]
如何实现这一点?基于@HotLicks注释的更新:
您的JSON无效,因为双引号并不总是在字符串中转义。可能您应该检查创建JSON的方式和库。您使用的是哪个JSON库?在使用了几个之后,我已经确定了分别为
JSONArray
和JSONObject
实现List
和Map
的最大好处,我希望它也能解决您的问题。如果您这样做,我的输出应该是[“ADMIN”,“UI”]而不是[“ADMIN\,“UI\”,然后字符串将在[
之后结束。即,第一个双引号。不清楚是否是这种情况。字符串中的其他引号不会转义。如果反斜杠字符仍然存在,则以下引号字符将被视为普通的旧字符,而不是“封闭”引号,其效果与完全没有引号相同(即,无效JSON)@HotLicks是的,你是对的。我错过了。我会更新我的答案,尽管我怀疑有什么事情你没有告诉我们——其他操作混杂在那里。我在这之后进行REST调用。这些代码在execute方法下,由ant目标调用。我的意思是关于JSONArray的构造。above错误这太离谱了,不可能是任何常用JSON工具包的结果。我注意到,您列出的JSON不可能来自上述代码,因为JSON是用“数组”包装的,而您最外层的实体是“对象”。您需要向我们展示真实的代码。为我工作。谢谢。