如何将JSONObject强制转换为自定义Java类?

Gee*_*cks 13 java json-simple

在Java中(使用json-simple)我已成功解析了使用JSON.stringify在JavaScript中创建的JSON字符串.它看起来像这样:

{"teq":14567,"ver":1,"rev":1234,"cop":15678}
Run Code Online (Sandbox Code Playgroud)

该字符串存储自定义JavaScript对象的状态,我现在希望将其重新构成纯Java类.它不顺利 - 首次涉足来自C#背景的Java.:-P

该对象目前采用org.json.simple.JSONObject的形式,因为这是json-simple从JSONParser.parse()操作生成的.

如何将此JSONObject强制转换为新的Java类?(其定义如下......)

public class MyCustomJSObject {
    public int teq;
    public int ver;
    public int rev;
    public int cop;
}
Run Code Online (Sandbox Code Playgroud)

ars*_*tov 14

使用杰克逊图书馆

    //create ObjectMapper instance
    ObjectMapper objectMapper = new ObjectMapper();

    //convert json string to object
    Employee emp = objectMapper.readValue(jsonData, Employee.class); 
Run Code Online (Sandbox Code Playgroud)

  • 我认为用户需要使用 JSON-Simple 进行转换 (2认同)
  • readvalue不要将jsonobject作为参数 (2认同)

Mil*_*lon 12

最简单的方法,但要小心导入相应的库

Gson gson= new Gson();
CustomPOJOClass obj = gson.fromJson(jsonObject.toString(),CustomPOJOClass.class);
Run Code Online (Sandbox Code Playgroud)


diy*_*da_ 7

有很多图书馆可以做到这一点。这是我的建议。在这里你可以找到图书馆

import com.google.gson.Gson; 
Run Code Online (Sandbox Code Playgroud)

然后做,

Gson gson = new Gson();  
Student student = gson.fromJson(jsonStringGoesHere, Student.class);  
Run Code Online (Sandbox Code Playgroud)

Maven 依赖

    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.2.4</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)