我的代码看起来像这样:
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“是实际输出中的数组和期望输出中的字符串之间的区别。有人能解释一下为什么会这样吗?另外,如果有一个术语可以更好地对我的问题进行分类?
发布于 2013-01-22 02:24:57
这实际上是一个已经被报告的错误。这里有个链接:http://sourceforge.net/tracker/?func=detail&aid=3201838&group_id=171425&atid=857928
..。看起来这个库不再被支持了,这个问题从2011年中就已经存在了……
我们已经被json-lib库不再被官方支持所拖累,并决定切换到gson。这个问题可能是由于我们的代码中有太多的地方没有任何好的修复或解决办法而引起的。
发布于 2013-01-22 01:56:57
看起来很奇怪的行为,但是如果put试图将值转换为JSONObject,并且如果我正确解释了documentation,那么您似乎需要引用一些字符串:
如果
字符串不是以引号或单引号开头,并且不包含前导空格或尾随空格,并且不包含以下任何字符,则根本不需要对其进行引号:
{ } [ ] / \ : , = ; #;如果它们看起来不像数字,并且它们不是保留字true、false或null。
这意味着如果你想要一个字符串,你应该使用:
p.put("some_attribute2","'[3something]'");https://stackoverflow.com/questions/14443631
复制相似问题