Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串转换为JSONArray_Java_Arrays - Fatal编程技术网

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"]