来自json-lib的不需要的输出,其字符串看起来像是一个数组

时间:2013-01-21 17:02:34

标签: java json json-lib

我的代码看起来像这样:

import net.sf.json.*;--just so you know what the library is
...
JSONArray a = new JSONArray();
JSONObject p = new JSONObject();
p.put("some_attribute1","some normal string");
p.put("some_attribute2","[3something]");
p.put("some_attribute3","[something3]");
a.add(p);
System.out.println(a.toString());

这会产生:

[
    {
        "some_attribute1":"some normal string",
        "some_attribute2":["3something"],
        "some_attribute3":"[something3]"
    }
]

而不是所需的结果:

[
    {
        "some_attribute1":"some normal string",
        "some_attribute2":"[3something]",
        "some_attribute3":"[something3]"
    }
]

注意“some_attribute2”与实际输出中的数组之间的差异与所需输出中的字符串之间的区别。谁能解释为什么会这样?如果有一个术语可以更好地对我的问题进行分类呢?

2 个答案:

答案 0 :(得分:0)

这实际上是已经报告的错误。这是链接:http://sourceforge.net/tracker/?func=detail&aid=3201838&group_id=171425&atid=857928

...它看起来不再支持这个库了,这个问题自2011年中期以来就存在......

我们已经被json-lib库推迟了,不再受到官方支持,并决定切换到gson。我们的代码中有太多地方没有任何好的修复或解决方法,可能会导致此问题。

答案 1 :(得分:-1)

看起来很奇怪,但如果put尝试将值转换为JSONObject,并且我正确地解释了documentation,那么您似乎需要引用一些字符串:

  

如果字符串不以引号或单引号开头,并且它们不包含前导或尾随空格,并且它们不包含任何这些字符,则根本不需要引用字符串:{{1}如果它们看起来不像数字,并且它们不是保留字{ } [ ] / \ : , = ; #truefalse

这意味着如果你想要一个你应该使用的字符串:

null