使用GSON将JSON文件解析为Java

时间:2016-07-29 10:10:00

标签: java json parsing gson

我正在尝试parse JSON GSON文件到Gson gson = new GsonBuilder().create(); Person p1 = gson.fromJson(new FileReader("/Users/blabla/Desktop/person.json"), Person.class); System.out.println(p1); 的Java,我有问题

public class Person {
    private String name;
    private int age;
    private List<String> Friends; 

    //Getters and setters

这是我的Person类

{
  "Name":"TEXT",
  "Weight":95,
  "Height":1.87,
  "Friends":[
    "FRIEND1",
    "FRIEND2",
    "FRIEND3"
  ]
}

这是我的JSON文件

Person@52b2a2d8

输出为let displayLink = CADisplayLink(target: self, selector: #selector(update)) displayLink.addToRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode let expectedFramesPerSecond = 60 var diff : CGFloat = 0 func update() { let diffUpdated = self.headerView.arcHeight - self.new_headerView_arcHeight let done = (fabs(diffUpdated) < 0.1) if(!done){ self.headerView.arcHeight -= diffUpdated/(expectedFramesPerSecond*0.5) self.setNeedsDisplay() } }

我做错了什么?

3 个答案:

答案 0 :(得分:2)

命名很重要......你需要确保JSON keys与你的班级attributes(小写/大写)等相同......

JSON更改为

{ "name":"TEXT", "Weight":95, "Height":1.87, "Friends": [ "fRIEND1", "FRIEND2", "FRIEND3" ] }

或更改您的Person class属性

private String Name;
private int age;
private List<String>Friends; 

此外,您需要在Override toString中使用Person class方法才能获得良好的打印

e.g。

将此添加到您的Person类:

    @Override
    public String toString() {

        return (name + " : " + age + " : " + Friends);
    }

答案 1 :(得分:1)

如果Person类没有toString方法,那么结果当然会喜欢这个。你需要覆盖toString()。

你可以在这里看到toString()How to use the toString method in Java?

答案 2 :(得分:0)

1)您的属性名称应与JSON

匹配

2)右键单击eclipse并生成toString()方法。

例:     人类应该是

public class Person {
    String name;
    int age;
    List<String> friends

    //Getters and setters
}