java从String创建JSONArray:org.json.JSONException:Bad character':'

时间:2014-04-05 23:30:31

标签: java json arrays

我按以下格式获取字符串:

    String buffer = "[{\"field1\": 11,\"field2\": 12,\"field3\": 13}]";

并希望将其转换为JSONArray。 因此,我使用以下代码:

    JSONArray Jarray = CDL.toJSONArray(buffer);

我的问题现在我得到以下例外:

    org.json.JSONException: Bad character ':' (58). at 24 [character 25 line 1]
at org.json.JSONTokener.syntaxError(JSONTokener.java:432)
at org.json.CDL.rowToJSONArray(CDL.java:113)
at org.json.CDL.toJSONArray(CDL.java:193)
at org.json.CDL.toJSONArray(CDL.java:182)
at MyDataexchange.MyCVSConverter.convertJson(MyCVSConverter.java:44)
at Mainexe.DataTest.main(DataTest.java:22)

正如您在stacktrace中看到的,我想用它将字符串转换为.cvs。 由于我不知道如何以更好的方式做到这一点,我想知道如何解决这个异常。 我是否需要替换':'有什么? (Substitution':' to','会产生null,例如但不会抛出异常,但它对我没有帮助) 如果是的话,告诉我什么是很好的,否则欢迎任何建议。

2 个答案:

答案 0 :(得分:2)

org.json.CDL用于解析和序列化逗号分隔文本。但是,您的示例字符串不是逗号分隔的文本。这是JSON。你可能想要JSONArray Jarray = new JSONArray(buffer)

答案 1 :(得分:0)

好的,这是一个更好的方法(类似于“客人”所说的):

String s = "[{\"field1\": 11,\"field2\": 12,\"field3\": 13}]";
Object obj=JSONValue.parse(s);
JSONArray array=(JSONArray)obj;