JSON:JsonString的对象 - JsonString到X.class对象

时间:2016-12-01 14:42:26

标签: java json jax-rs java-ee-7

我有一个名为MediaList的类,我想用JSON-String和向后的值解析这个类。

public class KeywordList {
       private List<Keyword> keywords = new ArrayList<>();
}

这里是JSON-String:

{
    "keywords": [
        {
            "id": 12,
            "name": "Thesis",
            "mediaCount": 31
        }, ...
    ]
}

我正在使用google lib gson ,但我只是想使用标准的java版本和jax-rs,因为我不希望第三方工具出现在我的项目中。

2 个答案:

答案 0 :(得分:5)

不幸的是你必须使用外部库,因为Java默认情况下不能这样做。

虽然这可能会随着Java 9而改变,但从变化来看,我还没有在JSON库中看到构建内容。我听说但我还没有在里面看到它。

您可以看到here Java 9的所有新功能。

您将找到可能需要的库以及教程here

在它存在之前,我们拥有了令人惊叹的Jackson图书馆:

1.1将Java对象转换为JSON,writeValue(...)

ObjectMapper mapper = new ObjectMapper();
Staff obj = new Staff();

//Object to JSON in file
mapper.writeValue(new File("c:\\file.json"), obj);

//Object to JSON in String
String jsonInString = mapper.writeValueAsString(obj);

1.2将JSON转换为Java对象,readValue(...)

ObjectMapper mapper = new ObjectMapper();
String jsonInString = "{'name' : 'mkyong'}";

//JSON from file to Object
Staff obj = mapper.readValue(new File("c:\\file.json"), Staff.class);

//JSON from URL to Object
Staff obj = mapper.readValue(new URL("http://mkyong.com/api/staff.json"), Staff.class);

//JSON from String to Object
Staff obj = mapper.readValue(jsonInString, Staff.class);

Staff的位置:

 import java.math.BigDecimal;    import java.util.List;
 public class Staff { 
     private String name; 
     private int age; 
     private String position; 
    private BigDecimal salary; 
    private List<String> skills; 
    //getters and setters 
}

完成教程here

答案 1 :(得分:1)

JDK本身并不包含JAX-RS标准的实现,因此您无论如何都必须使用第三方库。