- Java to JSON: package json.jackson;
- import bean.User;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import java.io.File;
- import java.util.Map;
- /**
- * Jackson Java to JSON
- * 功能: JSON 与 Java 对象 Map 等类型转换, JSON 文件的读写等
- * 依赖包: jackson-databind-2.8.11.1.jarjackson-core-2.8.10.jarjackson-annotations-2.8.0.jar
- * https://github.com/FasterXML/jackson-databind
- */
- public class JavaToJSON {
- public static void main(String[] ars) throws Exception {
- User user = new User("tom", 25, "NO.1 street");
- ObjectMapper objectMapper = new ObjectMapper();
- // Java 对象转 json, 也支持 bytes
- String json = objectMapper.writeValueAsString(user);
- System.out.println("Java 对象转 json:" + json);
- // json 转 Java 对象
- User user2 = objectMapper.readValue(json, User.class);
- System.out.println("json 转 Java 对象" + user2);
- // 读文件
- String jsonFilePath = "src/main/java/json/jackson/JsonReader.json";
- User user3 = objectMapper.readValue(new File(jsonFilePath), User.class);
- System.out.println("读取 JSON 文件:" + user3);
- // 写文件
- objectMapper.writeValue(new File(jsonFilePath), user3);
- // json 转 map, 也支持 List
- Map map = objectMapper.readValue(json, Map.class);
- System.out.println("json 转 map:" + map);
- // map 转 json 字符串, 支持所有类型转字符串
- String json2 = objectMapper.writeValueAsString(map);
- System.out.println("map 转 json:" + json2);
- }
- }
- JsonNode: package json.jackson;
- import com.fasterxml.jackson.databind.JsonNode;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import java.io.File;
- import java.util.List;
- /**
- * JsonNode
- * 处理复杂的 JSON, 返回多个对象的情况
- * 从文件中读取复杂的 JSON, 根据 key 找到对应 value 值
- * 依赖包: jackson-databind-2.8.11.1.jarjackson-core-2.8.10.jarjackson-annotations-2.8.0.jar
- * https://github.com/FasterXML/jackson-databind
- */
- public class JSONTreeDemo {
- public static void main(String[] ars) throws Exception {
- ObjectMapper objectMapper = new ObjectMapper();
- String jsonFilePath = "src/main/java/json/jackson/Json2.json";
- // 以树形态支持多对象的情况: 支持读取多种类型
- JsonNode jsonNode = objectMapper.readTree(new File(jsonFilePath));
- System.out.println("jsonNode:" + jsonNode);
- // 根据 key 查询多个值, 返回 list
- List < JsonNode > list = jsonNode.findValues("name");
- System.out.println("Values:" + list);
- // 根据 key 查询单个值
- String channel = jsonNode.get("channel").asText();
- System.out.println("查询 channel 的值:" + channel);
- }
- }
来源: http://www.bubuko.com/infodetail-2497618.html