根据我在json.org上读到的内容,所有的JSON字符串都应该以{
(花括号)开头,[
字符(方括号)表示JSON中的数组元素。
我使用的是JSON库,我得到的输入是以[
开头的,所以我认为这不是有效的json4j
。我简单地看了一下JSON schema,但我并没有真正发现JSON文件不能以[
开头,或者只能以{
开头的说法。
发布于 2012-06-19 01:40:52
如果解析的字符串以左大括号([)开头,则可以使用JSONArray.parse
返回JSONArray对象,然后可以使用get(i)
,其中i是从0到返回的from数组的size()-1
的索引。
import java.io.IOException;
import com.ibm.json.java.JSONArray;
import com.ibm.json.java.JSONObject;
public class BookListTest {
public static void main(String[] args) {
String jsonBookList = "{\"book_list\":{\"book\":[{\"title\":\"title 1\"},{\"title\":\"title 2\"}]}}";
Object book_list;
try {
book_list = JSONObject.parse(jsonBookList);
System.out.println(book_list);
Object bookList = JSONObject.parse(book_list.toString()).get("book_list");
System.out.println(bookList);
Object books = JSONObject.parse(bookList.toString()).get("book");
System.out.println(books);
JSONArray bookArray = JSONArray.parse(books.toString());
for (Object book : bookArray) {
System.out.println(book);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
它产生了如下输出:
{"book_list":{"book":[{"title":"title 1"},{"title":"title 2"}]}}
{"book":[{"title":"title 1"},{"title":"title 2"}]}
[{"title":"title 1"}, {"title":"title 2"}]
{"title":"title 1"}
{"title":"title 2"}
注意:如果您尝试调用JSONObject.parse(books.toString());
,则会收到遇到的错误:
java.io.IOException: Expecting '{' on line 1, column 2 instead, obtained token: 'Token: ['
https://stackoverflow.com/questions/5034444
复制相似问题