Как разобрать этот JSON из файла - PullRequest
0 голосов
/ 05 апреля 2019

Как я могу разобрать этот файл json, используя SimpleJson lib, формат такой:

Спасибо

мой файл выглядит так: файл json с массивом Json внутри;

 {"data":[{"host":"hostname1","port":2049,"open":"false", "info":" "},  
 {"host":"hostname1","port":2049,"open":"false", "info":" "}, 
 {"host":"hostname2","port":2049,"open":"false", "info":" "}, 
 {"host":"hostname3","port":2049,"open":"false", "info":" "}, 
 {"host":"hostname4","port":443,"open":"false", "info":" "}, 
 {"host":"hostname5","port":443,"open":"false","info":" "}, 
 {"host":"hostname6","port":61208,"open":"false","info":" "}, 
 {"host":"hostname7","port":139,"open":"false","info":" "}]}  

мой код на данный момент:

JSONParser parser = new JSONParser();
       try {
           Object obj = parser.parse(new FileReader("D:/file.json"));
           JSONArray jsonObject = (JSONArray) obj;
           JSONObject arr = (JSONObject) jsonObject.get(0);
           JSONArray arguments = (JSONArray) arr.get("arguments");
           System.out.println("arguments>>>>>>>>> "+arguments);
           for(int i = 0 ; i< arguments.size() ;i++){
               JSONObject object = (JSONObject) arguments.get(i);
               System.out.println(object);
               return object;
           }
       } catch (Exception e) {
           e.printStackTrace();
       }
     return null;

Я сделал это вручную так:

//data

           JSONObject obj1 = new JSONObject();
           obj1.put("host", "mkyong.com");
           obj1.put("port", "555");
           obj1.put("open", "false");
           obj1.put("info", "");

           JSONObject obj2 = new JSONObject();
           obj2.put("host", "mkyong.com");
           obj2.put("port", "555");
           obj2.put("open", "false");
           obj2.put("info", "");
           JSONArray list = new JSONArray();
           list.add(obj2);

           JSONObject datajson = new JSONObject();
           datajson.put("data", list);

1 Ответ

0 голосов
/ 05 апреля 2019

Похоже, JSON.simple - это старая библиотека Google. Я думаю, что вам нужно переключиться на GSON. Вот пример кода, который демонстрирует, как читать данные JSON. Ключ здесь в том, что исходный объект JSON содержит массив объектов JSON в качестве значения ключа data.

import java.io.FileReader;
import java.util.Iterator;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;

/**
 *
 * @author blj0011
 */
public class JsonSimpleReaderExample
{
    public static void main(String[] args)
    {
        JSONParser parser = new JSONParser();

        try {
            Object obj = parser.parse(new FileReader("file.json"));
            JSONObject jsonObject = (JSONObject) obj;

            JSONArray array = (JSONArray) jsonObject.get("data");
            Iterator<JSONObject> iterator = array.iterator();
            while (iterator.hasNext()) {
                JSONObject jsonObjectInJsonArray = (JSONObject) iterator.next();
                System.out.println(jsonObjectInJsonArray.get("host"));
            }
        }
        catch (Exception ex) {
            System.out.println(ex.toString());
        }
    }
}

Выход:

hostname1
hostname1
hostname2
hostname3
hostname4
hostname5
hostname6
hostname7
...