首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JSON可以以"[“开头吗?

JSON可以以"[“开头吗?
EN

Stack Overflow用户
提问于 2011-02-18 04:46:42
回答 1查看 114.8K关注 0票数 212

根据我在json.org上读到的内容,所有的JSON字符串都应该以{ (花括号)开头,[字符(方括号)表示JSON中的数组元素。

我使用的是JSON库,我得到的输入是以[开头的,所以我认为这不是有效的json4j。我简单地看了一下JSON schema,但我并没有真正发现JSON文件不能以[开头,或者只能以{开头的说法。

EN

回答 1

Stack Overflow用户

发布于 2012-06-19 01:40:52

如果解析的字符串以左大括号([)开头,则可以使用JSONArray.parse返回JSONArray对象,然后可以使用get(i),其中i是从0到返回的from数组的size()-1的索引。

代码语言:javascript
复制
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();
      }
   }
}

它产生了如下输出:

代码语言:javascript
复制
{"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());,则会收到遇到的错误:

代码语言:javascript
复制
java.io.IOException: Expecting '{' on line 1, column 2 instead, obtained token: 'Token: ['
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5034444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档