1

我的代码看起来像这样:

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”作为实际输出中的数组与所需输出中的字符串之间的区别。谁能解释这是为什么?另外,如果有一个术语可以更好地对我的问题进行分类?

4

2 回答 2

0

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

...看起来不再支持此库,该问题自 2011 年中期以来就存在...

我们被不再官方支持的 json-lib 库推迟了,并决定切换到 gson。这个问题可能是由于我们的代码中有太多地方没有任何好的修复或解决方法。

于 2013-01-21T18:24:56.540 回答
-1

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

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

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

p.put("some_attribute2","'[3something]'");
于 2013-01-21T17:56:57.080 回答