java对象转换为json字符串_java中将字符串转换为json
大家好,又见面了,我是你们的朋友全栈君。
概要
Jackson是基于java平台的json处理框架。
Jackson提供了三种可选的json处理方法:流式API、树模型、数据绑定(data Binding),其中数据绑定是最常用的处理方式;本文主要介绍数据绑定的处理方式。
java对象与json字符串互相转换
java对象与json字符串互相转换的关键就是ObjectMapper对象的writeValue()方法 和 readValue()方法; 其中json字符串可以字符串的形式传入/传出,也可以以文件的形式传入/传出,见writeValue()方法 和 readValue()方法不同的参数。
ObjectMapper mapper = new ObjectMapper();
// java对象转换为json字符换
String Json = mapper.writeValueAsString(student1);
// json字符串转换为java对象
Student student2 = mapper.readValue(Json, Student.class);
代码示例
import java.io.IOException;
import org.json.JSONObject;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class jacksonTest {
public static void main(String[] args) {
ObjectMapper mapper = new ObjectMapper();
try {
/** json字符串转换为java对象 */
// json中的对象个数比java对象的属性个数少
JSONObject json1 = new JSONObject();
json1.put("name", "anne");
json1.put("age", 15);
String d1 = json1.toString();
Student s1 = mapper.readValue(d1, Student.class);
System.out.println(s1.toString());
// json中出现java对象中没有的属性
JSONObject json2 = new JSONObject();
json2.put("name", "anne");
json2.put("age", 15);
json2.put("sex", "boy");
String d2 = json1.toString();
Student s2 = mapper.readValue(d2, Student.class);
System.out.println(s2.toString());
/** java对象转换为json字符串 */
Student s3 = new Student();
s3.setAge(12);
s3.setHobby("sport");
s3.setName("anne");
String d3 = mapper.writeValueAsString(s3);
System.out.println(d3);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
@JsonIgnoreProperties(ignoreUnknown = true)
class Student {
private String name;
private int age;
private String hobby;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
public String toString() {
return "name: " + name + ", age: " + age + ", hobby: " + hobby;
}
}
输出:
name: anne, age: 15, hobby: null
name: anne, age: 15, hobby: null
{"name":"anne","age":12,"hobby":"sport"}
说明 1、json字符串中的key应该与java对象的属性名相同 2、java对象中属性如果为private,则需要显示生成getter/setter方法;如果属性为public,则可以不必写getter/setter方法 2、java对象如果有自定义的构造方法,json字符串转换为java对象时会出错 3、如果json字符串中的属性个数小于java对象中的属性个数,可以顺利转换,java中多的那个属性为null 4、如果json字符串中出现java对象中没有的属性,则在将json转换为java对象时会报错:Unrecognized field, not marked as ignorable 解决方法: 在目标对象的类级别上添加注解:@JsonIgnoreProperties(ignoreUnknown = true);如上述代码示例所示
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/193186.html原文链接:https://javaforall.cn
相关文章
- java转换字符串为时间_JAVA字符串转日期或日期转字符串
- java bufferedwriter 编码,Java BufferedWriter对象与utf-8
- java xml解析框架_JAVA解析xml的五种方式对比
- 【说站】java求圆的面积代码
- Java的定时器_JAVA定时任务
- java list 转json 字符串_Java之JSON字符串与List集合之间相互转换
- java 字符串和整型的相互转换_java字符串转整型数组
- 数据如何使用Java读取MySQL数据(java读取mysql)
- java解压缩zip和rar的工具类详解编程语言
- 服务器使用Java进行Linux服务器监控(java监控linux)
- Oracle与Java: 未来前瞻(oracle与java)
- Java实现Redis分布式锁(java实现redis锁)
- Java程序员如何优雅操作Redis(java操作redis)
- 键使用Java管理Redis过期键(redisjava过期)
- 机制Redis Java实现的过期机制(redisjava过期)
- Java脚本实现Linux系统的登录(java登录Linux)
- Java中Oracle使用实践(java中oracle题)
- Redis中使用Java快速实现自增(redis自增 java)
- java对象转换String类型的三种方法