JSON使用Java读取文本数据

时间:2015-03-13 09:25:28

标签: java json

我的文本文件包含JSON数据,格式如下:

[   {
    "belongs_to_suite": "no",
    "belongs_to_suite_id": "",
    "brand_family": "",
    "cat_manufacturer_id": 4382,
    "cat_sw_edition_id": null,
    "cat_sw_product_id": 38,
    "cat_sw_release_id": 47354894,    } ]

我想只读brand_family,我想我需要一个JSON数组。 我是否需要首先使用JSON对象定义此格式?

我已经下载了org.json lib,我有以下代码,我正在阅读文本文件,但是我无法找到如何定义格式,然后将[{}...{}]中的所有数据导入到数组中:

FileInputStream fstream = new FileInputStream("file.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
try {
    JSONObject obj = new JSONObject(br);
    String n = obj.getString("version");
    //int a = obj.getInt("age");
    System.out.println(n);
}

2 个答案:

答案 0 :(得分:0)

如评论中所述,您的JSON是一个数组,所以首先应该调用:

JSONArray array = new JSONArray(br);

然后你可以做一些大小或获得第一个对象:

JSONObject first = array.getJSONObject(0);

最后,拥有JSONObject,您可以提取和处理任何字段:

System.out.println(first.getString(""));

答案 1 :(得分:0)

您可以简单地执行以下操作:

      JSONParser parser=new JSONParser();

            try {

                JSONObject jsonObject = (JSONObject) parser.parse(new InputStreamReader(new FileInputStream("D://jsontest.txt")));

                JSONArray lang= (JSONArray) jsonObject.get("obj");
                for(int i=0; i<lang.size(); i++){
                     JSONObject obj=(JSONObject) lang.get(i);
                     System.out.println(obj.get("brand_family"));
                  }

            }catch(Exception e){

                e.printStackTrace();
            }

将文件更改为以下内容:

{
  "obj": [
    {
        "belongs_to_suite": "no",
        "belongs_to_suite_id": "",
    "brand_family": "1",
        "cat_manufacturer_id": 4382,
        "cat_sw_edition_id": null,
        "cat_sw_product_id": 38,
        "cat_sw_release_id": 47354894
    },
    {
        "belongs_to_suite": "yes",
        "belongs_to_suite_id": "",
    "brand_family": "2",
        "cat_manufacturer_id": 4382,
        "cat_sw_edition_id": null,
        "cat_sw_product_id": 38,
        "cat_sw_release_id": 47354894
    }
  ]

}