在Java(using json-simple)中,我已成功解析了使用JSON.stringify在JavaScript中创建的JSON字符串。它看起来像这样:
{"teq":14567,"ver":1,"rev":1234,"cop":15678}
此字符串存储自定义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;
}
答案 0 :(得分:12)
使用jackson库
//create ObjectMapper instance
ObjectMapper objectMapper = new ObjectMapper();
//convert json string to object
Employee emp = objectMapper.readValue(jsonData, Employee.class);
答案 1 :(得分:10)
从https://github.com/google/gson添加依赖项并将其用作
Gson gson= new Gson();
CustomPOJOClass obj = gson.fromJson(jsonObject.toString(),CustomPOJOClass.class);
答案 2 :(得分:4)
有很多图书馆可以做到这一点。这是我的建议。 Here您可以找到图书馆
import com.google.gson.Gson;
然后再做,
Gson gson = new Gson();
Student student = gson.fromJson(jsonStringGoesHere, Student.class);
Maven依赖
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>
</dependency>
答案 3 :(得分:3)
Java类的JSON字符串? 你可以试试fastjson:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.41</version>
</dependency>
并使用java代码:
MyCustomJSObject object = JSON.parseObject(jsonString,MyCustomJSObject.class);
答案 4 :(得分:2)
自从这个(现在流行的)问题被问到以来已经过去了几年。虽然我仍然同意json-simple是我当时的需要,经过反思,我认为SO社区可以更好地服务于&#34; checkmark&#34;杰克逊解决方案旁边。我今天不接受我自己的回答;杰克逊非常棒!
我认为这个体面的json简单库是文档较差的受害者。如果您没有使用JSONParser(请参见图!),而是使用此JSONValue.parse()方法,它就像这样:
//JSONParser parser = new JSONParser(); // DON'T USE THIS
Object obj = JSONValue.parse("A JSON string - array of objects: [{},{}] - goes here");
JSONArray arrFilings = (JSONArray)obj;
System.out.println("We can print one this way...");
System.out.println(arrFilings.get(5) + "\n");
System.out.println("We can enumerate the whole array...");
for(Object objFiling : arrFilings){
System.out.println(objFiling);
}
System.out.println("\n");
System.out.println("We can access object properties this way...");
for(Object objFiling : arrFilings){
JSONObject o = (JSONObject)objFiling; // MUST cast to access .get()
MyJSObject.fyq = o.get("fyq");
}
System.out.println("\n");
感谢所有发布的人。坚持json-simple是一个问题,这是迄今为止唯一的json简单答案。杰克逊看起来很光滑,亚马逊也在他们的SDK for Java中使用它,所以......如果它对AWS足够好......