2015-11-10 4 views
-1

Теперь я хочу прочитать серию данных JSON (данные Nodes) из локального файла txt (показано ниже, NODES.txt). Я использую javax.json для этого.Как читать данные JSON из txt-файла в Java?

В настоящее время у меня есть классузел, который содержит атрибуты: type, id, geometry class(contains type, coordinates), properties class (contains name);

Вот данные мне нужно получить, он содержит более 500 узлов в нем, здесь я просто перечислить 3 из них, поэтому мне нужно использовать цикл, чтобы сделать это, я совершенно новичок в этом, пожалуйста, помогите !!

В пример JSON данные в NODES.txt

[ 
{ 
    "type" : "Feature", 
    "id" : 8005583, 
    "geometry" : { 
    "type" : "Point", 
    "coordinates" : [ 
    -123.2288, 
    48.7578 
    ] 
    }, 
    "properties" : { 
    "name" : 1 
    } 
    }, 
    { 
    "type" : "Feature", 
    "id" : 8005612, 
    "geometry" : { 
    "type" : "Point", 
    "coordinates" : [ 
    -123.2271, 
    48.7471 
    ] 
    }, 
    "properties" : { 
    "name" : 2 
    } 
    }, 
    { 
    "type" : "Feature", 
    "id" : 8004171, 
    "geometry" : { 
    "type" : "Point", 
    "coordinates" : [ 
    -123.266, 
    48.7563 
    ] 
    }, 
    "properties" : { 
    "name" : 3 
    } 
    }, 
    ****A Lot In the Between**** 
{ 
    "type" : "Feature", 
    "id" : 8004172, 
    "geometry" : { 
    "type" : "Point", 
    "coordinates" : [ 
    -113.226, 
    45.7563 
    ] 
    }, 
    "properties" : { 
    "name" : 526 
    } 
    } 
] 
+0

он сильно отличается от той, я проверил уже, что один. это нужно использовать LOOP, но нет примеров, похожих на мои, почему вы вычитали мой балл ??? ! @ Tgsmith61591 –

+0

@ user3765602 Вы можете отправить код, который может обрабатывать один ** Узел **? –

+0

@ user3765602 Я не спустил вас вниз. Люди понижают, если они чувствуют, что вопрос не добавляется на сайт или если он не придерживается правил для вопросов. Если вы не включите достаточное количество информации в свой вопрос, люди пристыкуют вас. – Tgsmith61591

ответ

0

Создание классов для представления записей:

Feature.java:

import java.util.Map; 

public class Node { 
    public String type; 
    public String id; 
    public Geometry geometry; 
    public Properties properties; 
} 

Geometry.java:

import java.util.List; 

public class Geometry { 
    public String type; 
    public List<Double> coordinates; 
} 

Properties.java:

public class Properties { 
    public String name; 
} 

И главный класс приложения для управления обработкой.

Main.java:

import com.google.gson.Gson; 
import java.io.FileReader; 
import java.io.Reader; 

public class Main { 
    public static void main(String[] args) throws Exception { 
     try (Reader reader = new FileReader("NODES.txt")) { 
      Gson gson = new Gson(); 
      Node[] features = gson.fromJson(reader, Node[].class); 
      // work with features 
     } 
    } 
} 
+0

Очень похоже на другой вопрос, но с разными объектами: http://stackoverflow.com/questions/18421674/using-gson-to-parse-a-json-array –

1

Во-первых, читайте в файле и сохранить содержимое в ONEString:

BufferedReader reader = new BufferedReader(new FileReader("NODES.txt")); 
String json = ""; 
try { 
    StringBuilder sb = new StringBuilder(); 
    String line = reader.readLine(); 

    while (line != null) { 
     sb.append(line); 
     sb.append("\n"); 
     line = reader.readLine(); 
    } 
    json = sb.toString(); 
} finally { 
    reader.close(); 
} 

Затем анализировать данные JSon из Строка:

JSONObject object = new JSONObject(json); // this will get you the entire JSON node 
JSONArray array = object.getJSONArray("Node"); // put in whatever your JSON data name here, this will get you an array of all the nodes 

ArrayList<Node> nodeList = new ArrayList(array.length())<Node>; 
for(int i=0; i<array.length(); i++){ // loop through the nodes 
    JSONObject temp = array.getJSONObject(i); 
    nodeList.get(i).setType(temp.getString("type")); //start setting the values for your node... 
    .... 
    .... 
} 
Смежные вопросы