Java Json Library

190 阅读1分钟

记录Fastjson和Jackson两个最常用的json库的使用方法

maven依赖

Fastjson

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>x.x.x</version>
</dependency>

Jackson

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>x.x.x</version>
  </dependency>

POJOs to JSON and back

Fastjson

Model model = new Model();
//POJOs to JSON
String json = JSON.toJSONString(obj); 
//JSON to POJOs
Model model2 = JSON.parseObject(json, Model.class);

Jackson

//create once, reuse
ObjectMapper mapper = new ObjectMapper(); 
//POJOs to JSON
String jsonString = mapper.writeValueAsString(myResultObject);
//JSON to POJOs
value = mapper.readValue(jsonString, XXX.class);

Map and List

Fastjson

Map<String, Integer> map = JSON.parseObject(mapStr, Map.class);
List<String> list = JSON.parseArray(listStr, XXX.class);

Jackson

Map<String, Integer> scoreByName = mapper.readValue(jsonSource, Map.class);
List<String> names = mapper.readValue(jsonSource, List.class);

Generic

Fastjson

List<Model> list = JSON.parseObject(jsonStr, new TypeReference<List<Model>>(){});

Jackson

Map<String, ResultValue> results = mapper.readValue(jsonSource, new TypeReference<Map<String, ResultValue>>() { } );

Tree Model

Fastjson

JSONObject jsonObj = JSON.parseObject(jsonStr);

Jackson

// can be read as generic JsonNode, if it can be Object or Array; or,
// if known to be Object, as ObjectNode, if array, ArrayNode etc:
ObjectNode root = mapper.readTree("stuff.json");
String name = root.get("name").asText();
int age = root.get("age").asInt();

Annotations

FastJson

@JSONField(name="ID")
@JSONField(format="yyyyMMdd")
@JSONField(serialize=false)

Jackson

@JsonProperty("name")
@JsonIgnore