【问题标题】:JSON: Object to JsonString - JsonString to X.class ObjectJSON:对象到 Json 字符串 - Json 字符串到 X.class 对象
【发布时间】:2016-12-01 14:42:25
【问题描述】:

我有一个名为 MediaList 的类,我想将这个类的值解析为 JSON 字符串并向后解析。

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

这里是 JSON 字符串:

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

我正在使用 google lib gson,但我只想使用带有 jax-rs 的标准 java 版本,因为我不希望在我的项目中使用 3rd 方工具。

【问题讨论】:

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


    【解决方案1】:

    不幸的是,您必须使用外部库,因为默认情况下 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

    【讨论】:

    • 杰克逊库很棒。绝对是我首选的 JSON 库
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2014-03-26
      • 1970-01-01
      • 2021-12-31
      • 2011-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多