简体   繁体   English

使用 Gson 库解析 java 中的 JSON 本地文件

[英]parse JSON local file in java with Gson library

I have this JSON file:我有这个 JSON 文件:

{
  "mapping": {
    "trips": [
      {
        "starttime": "15:10:50.000",
        "endtime": "15:17:30.000",
        "name": "island1",
        "program": [
          {
            "starttime": "15:14:27.000",
            "endtime": "15:14:54.000",
            "name": "Breakfast"
          },
          {
            "starttime": "15:16:35.000",
            "endtime": "15:16:56.000",
            "name": "Swimming"
          },
          {
            "starttime": "15:15:41.000",
            "endtime": "15:16:07.000",
            "name": "Lunch"
          },
          {
            "starttime": "15:10:50.000",
            "endtime": "15:11:19.000",
            "name": "Swimming"
          },
          {
            "starttime": "15:17:01.000",
            "endtime": "15:17:30.000",
            "name": "Dinner"
          }
        ]
      },
      {
        "starttime": "15:18:43.000",
        "endtime": "15:27:34.000",
        "name": "island2",
        "program": [
          {
            "starttime": "15:20:53.000",
            "endtime": "15:21:15.000",
            "name": "Yoga"
          },
          {
            "starttime": "15:20:17.000",
            "endtime": "15:20:43.000",
            "name": "Breakfast"
          },
          {
            "starttime": "15:20:28.000",
            "endtime": "15:20:55.000",
            "name": "Swimming"
          },
          {
            "starttime": "15:23:23.000",
            "endtime": "15:23:46.000",
            "name": "Swimming"
          },
          {
            "starttime": "15:20:24.000",
            "endtime": "15:20:45.000",
            "name": "Dinner"
          },
          {
            "starttime": "15:26:17.000",
            "endtime": "15:26:38.000",
            "name": "Clubbing"
          },
          {
            "starttime": "15:20:04.000",
            "endtime": "15:20:28.000",
            "name": "Sleeping"
          }
        ]
      }
      ]
  }
}

How can I parse it in Java with Gson?如何使用 Gson 在 Java 中解析它? I tried something like that but I received com.example.Model@43556938 null我尝试了类似的方法,但收到了 com.example.Model@43556938 null

public static void main(String[] args) {
         Gson gson = new Gson();
         try (Reader reader = new FileReader("myjsonfile.json")) {

              
                Mapping mapping = gson.fromJson(reader, Mapping.class);
                Trip trip = gson.fromJson(reader, Trip.class);

                
                System.out.println(mapping);
                System.out.println(trip);

            } catch (IOException e) {
                e.printStackTrace();
            }


    }

I want to read all the information (JSON objects and arrays).我想阅读所有信息(JSON 对象和数组)。 Can I do it from line to line or any suggestions?我可以逐行执行或有任何建议吗?

You are fetching the Mapping object and priting the same object您正在获取映射 object 并打印相同的 object

Do it like this:像这样做:

private static final Type REVIEW_TYPE = new TypeToken<List<Mapping>>() {
}.getType();
Gson gson = new Gson();
JsonReader reader = new JsonReader(new FileReader(YOUR_JSON_FILE));
List<Mapping> data = gson.fromJson(reader, REVIEW_TYPE); // contains the whole mapping list
data.toScreen(); // print some value of data through iteration

When you are reading from Gson assign it to Hashmap and then read it from map.当您从 Gson 读取时,将其分配给 Hashmap,然后从 map 读取。 Hope This will help you Below is the code to do it:希望这会对您有所帮助以下是执行此操作的代码:

import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.HashMap;
import java.util.List;

import com.google.gson.Gson;

public class JsontoObj {

    public static void main(String[] args) {
        Gson gson = new Gson();
        try (Reader reader = new FileReader("/Documents/sample.json")) {
            HashMap<String, Mapping>  mappings= gson.fromJson(reader, HashMap.class);
            
            //System.out.println(mappings);
        }catch (IOException e) {
            e.printStackTrace();
        }
    }
}

class Mapping{
    List<Trip> trips;

    public List<Trip> getTrips() {
        return trips;
    }

    public void setTrips(List<Trip> trips) {
        this.trips = trips;
    }

}
class Trip{
    private String startTime;
    private String endTime;
    private String name;
    private Program program[] = new Program[5];
    public String getStartTime() {
        return startTime;
    }
    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }
    public String getEndTime() {
        return endTime;
    }
    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Program[] getProgram() {
        return program;
    }
    public void setProgram(Program[] program) {
        this.program = program;
    }
    
}
class Program{
    private String startTime;
    private String endTime;
    private String name;
    public String getStartTime() {
        return startTime;
    }
    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }
    public String getEndTime() {
        return endTime;
    }
    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM