使用GSON

时间:2018-02-01 06:02:26

标签: java json parsing apache-spark gson

    Gson gson = new Gson();
    String jsonInString = "{\"userId\":\"1\",\"userName\":\"Yasir\"}";
    User user= gson.fromJson(jsonInString, User.class);

User.class的用途是什么。任何人都可以在该课程中清楚地解释只有getter和setter,我需要知道该代码将如何工作吗?

2 个答案:

答案 0 :(得分:0)

它是一个pojo Class。

POJO表示“普通旧Java对象” - 它是一个纯数据结构,其中包含带有getter和可能的setter的字段,并且可能会覆盖Object中的某些方法(例如equals)或其他一些类似Serializable的接口,但是没有它自己的。

有关详细信息,请参阅Advantage of POJO

答案 1 :(得分:0)

假设我们需要使用JSON对象并将它们作为Java对象加载。假设Web服务器在查询时将生成以下JSON:

  

{NAME:“SAHIL”,LANGUAGE:“Java”,LOCATION:“Gurgaon”}

此JSON对象包含三个字段及其各自的值。假设我们需要使用JSON对象并创建表示此数据的Java对象。为了使这个例子更有趣,我们假设我们只对名称和位置字段感兴趣。

首先,我们需要创建一个包含我们想要表示的字段(名称和位置)的Java类。我们叫班级人物。此类的名称无关紧要,但字段的名称不相关。字段名称必须与JSON中的名称匹配(包括案例)。此外,该类必须包含一个默认构造函数(即使在此设置为私有)。如下所示,字段名称和位置为JSON中的大写字母。忽略JSON字段P_LANGUAGE,因为Java对象不包含具有此名称的字段。可以理解的是,字段的名称不遵循Java命名约定,但暂时让我们保持简单。

public class Person {
    private String NAME;
    private String LOCATION;

    **// Getters and setters are not required for this example.
    // GSON sets the fields directly using reflection.**

    @Override
    public String toString() {
        return NAME + " - " + LOCATION;
    }
}

准备好Java对象后,我们可以读取JSON对象并将它们作为Java对象加载,如下所示。为了模拟现实生活中的情况,我们使用字节流作为输入。另请注意,JSON内容保存在资源源文件夹中的文件中(通常不是这种情况)。

public class JsonToJava {

    public static void main(String[] args) throws IOException {
        try(Reader reader = new InputStreamReader(JsonToJava.class.getResourceAsStream("/Server1.json"), "UTF-8")){
            Gson gson = new GsonBuilder().create();
            Person p = gson.fromJson(reader, Person.class);
            System.out.println(p);
        }
    }
}

这应该产生以下结果:

SAHIL - Gurgaon

Gson解析了JSON对象并创建了Person类的一个实例,然后将其打印到命令提示符。

希望这会清除您的疑问,如果仍有疑问,请发表评论,将其清除。

提前完成。