使用Jackson将Java对象转换为JSON

问题

我希望我的JSON看起来像这样:

{
    "information": [{
        "timestamp": "xxxx",
        "feature": "xxxx",
        "ean": 1234,
        "data": "xxxx"
    }, {
        "timestamp": "yyy",
        "feature": "yyy",
        "ean": 12345,
        "data": "yyy"
    }]
}

代码到目前为止:

import java.util.List;

public class ValueData {

    private List<ValueItems> information;

    public ValueData(){

    }

    public List<ValueItems> getInformation() {
        return information;
    }

    public void setInformation(List<ValueItems> information) {
        this.information = information;
    }

    @Override
    public String toString() {
        return String.format("{information:%s}", information);
    }

}

public class ValueItems {

    private String timestamp;
    private String feature;
    private int ean;
    private String data;


    public ValueItems(){

    }

    public ValueItems(String timestamp, String feature, int ean, String data){
        this.timestamp = timestamp;
        this.feature = feature;
        this.ean = ean;
        this.data = data;
    }

    public String getTimestamp() {
        return timestamp;
    }

    public void setTimestamp(String timestamp) {
        this.timestamp = timestamp;
    }

    public String getFeature() {
        return feature;
    }

    public void setFeature(String feature) {
        this.feature = feature;
    }

    public int getEan() {
        return ean;
    }

    public void setEan(int ean) {
        this.ean = ean;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }

    @Override
    public String toString() {
        return String.format("{timestamp:%s,feature:%s,ean:%s,data:%s}", timestamp, feature, ean, data);
    }
}

我只是错过了如何使用Jackson将Java对象转换为JSON的部分:

public static void main(String[] args) {
   // CONVERT THE JAVA OBJECT TO JSON HERE
    System.out.println(json);
}

我的问题是:我的课程是否正确?我必须调用哪个实例以及如何实现此JSON输出?


#1 热门回答(304 赞)

要转换你的479518447in JSON与Jackson:

ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
String json = ow.writeValueAsString(object);

#2 热门回答(13 赞)

这可能有用.........

objectMapper.writeValue(new File("c:\\employee.json"), employee);

   // display to console
   Object json = objectMapper.readValue(
     objectMapper.writeValueAsString(employee), Object.class);

   System.out.println(objectMapper.writerWithDefaultPrettyPrinter()
     .writeValueAsString(json));

#3 热门回答(11 赞)

我知道这是旧的(我是java的新手),但我遇到了同样的问题。答案对我来说并不像新手那么清楚...所以我想我会添加我学到的东西。

我使用第三方库来帮助努力:org.codehaus.jackson所有下载的内容都可以找到here

对于基本JSON功能,你需要将以下jar添加到项目的库中:jackson-mapper-asljackson-core-asl

选择项目所需的版本。 (通常你可以使用最新的稳定版本)。

将它们导入项目库后,将以下import行添加到你的代码中:

import org.codehaus.jackson.JsonGenerationException;
 import org.codehaus.jackson.map.JsonMappingException;
 import org.codehaus.jackson.map.ObjectMapper;`

使用java对象定义并分配值,你希望将其转换为JSON并作为RESTful Web服务的一部分返回

User u = new User();
 u.firstName = "Sample";
 u.lastName = "User";
 u.email = "sampleU@example.com";

ObjectMapper mapper = new ObjectMapper();

try {
    // convert user object to json string and return it 
    return mapper.writeValueAsString(u);
}

  // catch various errors
  catch (JsonGenerationException e) {
    e.printStackTrace();
} 
  catch (JsonMappingException e) {
    e.printStackTrace();
}

结果应如下所示:{"firstName":"Sample","lastName":"User","email":"sampleU@example.com"}