Java 将字符串转换为JSONArray
我有一根这样的绳子Java 将字符串转换为JSONArray,java,arrays,Java,Arrays,我有一根这样的绳子 [{"id":"id","name":"","age":"","desig":"salary","dept":""}], [{"id":"id","name":"","age":"","desig":"salary","dept":""}],[],[], [],,,,,,ABC,ABC,XYZ,false,Hello 我想将其转换为JSONArray。当我试图转换时,我只得到了值 {"id":"id","name":"","age":"","desig":"salary",
[{"id":"id","name":"","age":"","desig":"salary","dept":""}],
[{"id":"id","name":"","age":"","desig":"salary","dept":""}],[],[],
[],,,,,,ABC,ABC,XYZ,false,Hello
我想将其转换为JSONArray
。当我试图转换时,我只得到了值
{"id":"id","name":"","age":"","desig":"salary","dept":""}
在那个阵列中。我没有得到其他值 您的字符串不是有效的JSONArray。参照JSONArray以
[
开头,以]
结尾,就像第一行一样。因此,解析器将第一行视为数组,并在第一行之后停止解析
如果要将完整字符串用作arry,请使用[
和]
将其加密,如下所示,然后重试:
[[{"id":"id","name":"","age":"","desig":"salary","dept":""}],
[{"id":"id","name":"","age":"","desig":"salary","dept":""}],[],[],
[],,,,,,ABC,ABC,XYZ,false,Hello]
尝试此操作以获取阵列&取决于您的需求更改并使用它
为此,您必须使用Jackson库您拥有的数据不是有效的JSON,因为它采用以下格式:
x,y,z
。。。尽管x
、y
和z
都是JSON数组,但实际字符串本身并不是JSON数组JSONArray
解析的长度不超过它需要的长度,以读取它认为有效的JSON,然后停止解析
您需要将数据设置为有效的JSON格式:
[x,y,z]
然后可以使用JSONArray
解析它。如果您的输入总是这个无效的JSON,您可以这样更正它:
JSONArray ja = (JSONArray) JSONSerializer.toJSON("[" + badJsonString + "]");
编辑:您使用的是而不是,因此我已将代码段更改为匹配
编辑:查看您的数据,即使在数组之后,它也不是有效的JSON数据。你有:
valid JSON array,
valid JSON array,empty valid JSON array,,empty valid JSON array,
empty valid JSON array,no data,no data,no data,no data,no data,text without quotes,text without quotes,text without quotes,text without quotes
这无法被任何JSON解析器解析。如果您的数据确实是这种格式,那么您需要将JSON解析器与您自己的解析器相结合,例如:
while (stillDataToRead) {
if (nextChar == '[') {
parseJSONArrayAndAdvanceTheCursor();
ignoreCommaAndAdvanceTheCursor();
}
else if (nextChar == ',') {
recordABlankField();
}
else {
readAnUnquotedStringUpToTheNextComma();
}
}
或者。。。以正确的JSON格式获取数据
[[{"id":"id","name":"","age":"","desig":"salary","dept":""}],
[{"id":"id","name":"","age":"","desig":"salary","dept":""}],[],[],
[],null,null,null,null,null,"ABC","ABC","XYZ",false,"Hello"]
所使用的语言是什么?你使用什么JSON库/框架?我使用net.sf.JSON.jsonarray。适当地,你需要一个“封闭”数组(数组数组)
[[{“id”:“id”,“name”:“age”:“,”desig:“salary”,“dept”:“}],…,Hello]
@petermm尝试过但没有成功。转换到JSONArray
时获取异常。异常是发生异常:net.sf.json.JSONException
。尝试了它,但没有成功。转换到JSONArray
时获取异常。异常是发生了一个异常:net.sf.json.JSONException
。有人告诉我如何在string1
中存储{“id”:“id”,“name”:“age”:“age”:“age”:“id”:“id”,“desig”:“desig”:“salary”,“dept”:“}
在string1
中,{“id”:“id”,“name”:“age”:“desig<代码>ABC
在string9
中,ABC
在string10
中,XYZ
在string11
中,等等。请看我的答案的结尾:[[{“id”:“id”,“姓名”:“年龄”:“设计”:“薪水”,“部门”:“,”;“年龄”:“设计”:“薪水”,“部门”:“,”,”,[],[],[],[],[],[],[],]空,空,空,空,空,空,空,空,“ABC”,“假”,“XYZ”]获取错误构造函数JSONArray(字符串)未定义。然后您使用的是org.json包的过期版本。现在的版本是:啊,我明白了。。。net.sf.json()是更常见的json.org代码的死叉。net.sf.json-lib已经4年没有更新了,它故意删除了JSONArray(String)
构造函数,尽管API文档说它应该拥有它:说“构造函数可以将json文本转换为Java对象”。但是Javadoc的其余部分说没有这样的构造函数。我的建议是抛弃这个旧的克隆库,使用真正的克隆库。
[[{"id":"id","name":"","age":"","desig":"salary","dept":""}],
[{"id":"id","name":"","age":"","desig":"salary","dept":""}],[],[],
[],null,null,null,null,null,"ABC","ABC","XYZ",false,"Hello"]