如果您想了解Jackson-Javabean到JSON字符串:大写变量在JSON中转换为小写的相关知识,那么本文是一篇不可错过的文章,我们将对java对象转json首字母大写进行全面详尽的解释,并且为
如果您想了解Jackson-Java bean到JSON字符串:大写变量在JSON中转换为小写的相关知识,那么本文是一篇不可错过的文章,我们将对java对象转json首字母大写进行全面详尽的解释,并且为您提供关于FastJson 对于 JSON 格式字符串、JSON 对象及 JavaBean 之间的相互转换、fastJson 对于 json 格式字符串,json 对象及 javaBean 之间的相互转换、fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化、jackson 实体转json json字符串转实体的有价值的信息。
本文目录一览:- Jackson-Java bean到JSON字符串:大写变量在JSON中转换为小写(java对象转json首字母大写)
- FastJson 对于 JSON 格式字符串、JSON 对象及 JavaBean 之间的相互转换
- fastJson 对于 json 格式字符串,json 对象及 javaBean 之间的相互转换
- fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化
- jackson 实体转json json字符串转实体
Jackson-Java bean到JSON字符串:大写变量在JSON中转换为小写(java对象转json首字母大写)
我正在使用ObjectMapper的writeValueAsString方法将Java bean转换为JSON字符串,其中Java
bean中的大写变量被更改为JSON字符串中的小写字母。实施了Jackson 2.7.4版本。菜豆样品-
public class BaseBean {private static final long serialVersionUID = 3947489072259877540L;private int _iXId;private String _sPNR;private ArrayList _alMinPriced = new ArrayList<TermBean>();public int getXId() { return _iXId;}public void setXId(int id) { _iXId = id;}public String getPNRNumber() { return _sPNR;}public void setPNRNumber(String _spnr) { _sPNR = _spnr;}public ArrayList getMinPriced() { return _alMinPriced;}public void setMinPriced(ArrayList minPriced) { _alMinPriced = minPriced;}public void setMinPriced(TermBean bnTerm) { _alMinPriced.add(bnTerm);}
}
之前,我们使用net.sf.json.JSON和JSONSerializer将Java bean转换为JSON。生成的JSON字符串与我们使用的Java
bean具有相似的命名。由于性能问题,我想对此进行更改并实施Jackson。
限制:我们无法更改Java
bean的命名约定,因为这些bean来自较旧的项目,并且几乎没有范围来更改bean中的变量名,甚至在每个bean中添加json属性。
我已经尝试了下面的代码,但是没有用
ObjectMapper mapper = new ObjectMapper();mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);mapper.setPropertyNamingStrategy(PropertyNamingStrategy.LOWER_CAMEL_CASE);
另外,我尝试了自定义的PropertyNamingStrategy,但对此还不清楚。
编辑:
net.sf.json.JSON 生成了上述Bean的JSON字符串,如下所述:
{"XId":11,"PNRNumber":"123456789","minPriced":[{"name":"JSON"},{"name":"simple"}]}
Jackson 为上述bean生成了JSON字符串,如下所述:
{"xid":11,"pnrnumber":"123456789","minPriced":[{"name":"JSON"},{"name":"Jackson"}]}
如您所见,在jackson中,“ XId”转换为“ xid”,在jackson中,“ PNRNumber”转换为“ pnrnumber”。
Jackson中是否有任何可用的配置更改来避免此类修改。或如何处理这种情况。
答案1
小编典典使用了以下罐子:
- 杰克逊核心2.7.4.jar
- 杰克逊注释2.7.4.jar
- jackson-databind-2.7.4.jar
步骤1:请按以下方式编写以下Mixin:
import java.util.ArrayList;import com.fasterxml.jackson.annotation.JsonProperty;public abstract class MixIn { @JsonProperty("PNRNumber") abstract String getPNRNumber(); @JsonProperty("XId") abstract int getXId(); @JsonProperty("minPriced") abstract ArrayList getMinPriced();}
步骤2:请按照以下步骤编写模块:
import com.fasterxml.jackson.databind.module.SimpleModule;public class MyModule extends SimpleModule{ public MyModule() { super("ModuleName"); } @Override public void setupModule(SetupContext context){ context.setMixInAnnotations(BaseBean.class, MixIn.class); }}
步骤3:现在是时候获取json String了,如下所示:
TermBean bean1=new TermBean("JSON");TermBean bean2=new TermBean("simple");ArrayList list=new ArrayList(); list.add(bean1); list.add(bean2);BaseBean bb=new BaseBean(); bb.setXId(11); bb.setPNRNumber("123456789"); bb.setMinPriced(list);ObjectMapper mapper = new ObjectMapper();Module myModule = new MyModule();mapper.registerModule(myModule); String jsonInString = mapper.writeValueAsString(bb); System.out.printf( "JSON: %s", jsonInString );
输出:
JSON:{“ XId”:11,“ PNRNumber”:“ 123456789”,“ minPriced”:[{“ name”:“ JSON”},{“
name”:“ simple”}]}}
希望这可以帮助。
FastJson 对于 JSON 格式字符串、JSON 对象及 JavaBean 之间的相互转换
fastJson 对于 json 格式字符串的解析主要用到了一下三个类:
JSON:fastJson 的解析器,用于 JSON 格式字符串与 JSON 对象及 javaBean 之间的转换。
JSONObject:fastJson 提供的 json 对象。
JSONArray:fastJson 提供 json 数组对象。
我们可以把 JSONObject 当成一个 Map<String,Object> 来看,只是 JSONObject 提供了更为丰富便捷的方法,方便我们对于对象属性的操作。我们看一下源码。
同样我们可以把 JSONArray 当做一个 List<Object>,可以把 JSONArray 看成 JSONObject 对象的一个集合。
此外,由于 JSONObject 和 JSONArray 继承了 JSON,所以说也可以直接使用两者对 JSON 格式字符串与 JSON 对象及 javaBean 之间做转换,不过为了避免混淆我们还是使用 JSON。
首先定义三个 json 格式的字符串,作为我们的数据源。

//json字符串-简单对象型
private static final String JSON_OBJ_STR = "{\"studentName\":\"lily\",\"studentAge\":12}";
//json字符串-数组类型
private static final String JSON_ARRAY_STR = "[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";
//复杂格式json字符串
private static final String COMPLEX_JSON_STR = "{\"teacherName\":\"crystall\",\"teacherAge\":27,\"course\":{\"courseName\":\"english\",\"code\":1270},\"students\":[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]}";

示例 1:JSON 格式字符串与 JSON 对象之间的转换。
示例 1.1-json 字符串 - 简单对象型与 JSONObject 之间的转换

/**
* json字符串-简单对象型与JSONObject之间的转换
*/
public static void testJSONStrToJSONObject(){
JSONObject jsonObject = JSON.parseObject(JSON_OBJ_STR);
//JSONObject jsonObject1 = JSONObject.parseObject(JSON_OBJ_STR); //因为JSONObject继承了JSON,所以这样也是可以的
System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
}

示例 1.2-json 字符串 - 数组类型与 JSONArray 之间的转换

/**
* json字符串-数组类型与JSONArray之间的转换
*/
public static void testJSONStrToJSONArray(){
JSONArray jsonArray = JSON.parseArray(JSON_ARRAY_STR);
//JSONArray jsonArray1 = JSONArray.parseArray(JSON_ARRAY_STR);//因为JSONArray继承了JSON,所以这样也是可以的
//遍历方式1
int size = jsonArray.size();
for (int i = 0; i < size; i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
}
//遍历方式2
for (Object obj : jsonArray) {
JSONObject jsonObject = (JSONObject) obj;
System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
}
}

示例 1.3 - 复杂 json 格式字符串与 JSONObject 之间的转换

/**
* 复杂json格式字符串与JSONObject之间的转换
*/
public static void testComplexJSONStrToJSONObject(){
JSONObject jsonObject = JSON.parseObject(COMPLEX_JSON_STR);
//JSONObject jsonObject1 = JSONObject.parseObject(COMPLEX_JSON_STR);//因为JSONObject继承了JSON,所以这样也是可以的
String teacherName = jsonObject.getString("teacherName");
Integer teacherAge = jsonObject.getInteger("teacherAge");
JSONObject course = jsonObject.getJSONObject("course");
JSONArray students = jsonObject.getJSONArray("students");
}

示例 2:JSON 格式字符串与 javaBean 之间的转换。
首先,我们针对数据源所示的字符串,提供三个 javaBean。

public class Student {
private String studentName;
private Integer studentAge;
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public Integer getStudentAge() {
return studentAge;
}
public void setStudentAge(Integer studentAge) {
this.studentAge = studentAge;
}
}


public class Course {
private String courseName;
private Integer code;
public String getCourseName() {
return courseName;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
}


public class Teacher {
private String teacherName;
private Integer teacherAge;
private Course course;
private List<Student> students;
public String getTeacherName() {
return teacherName;
}
public void setTeacherName(String teacherName) {
this.teacherName = teacherName;
}
public Integer getTeacherAge() {
return teacherAge;
}
public void setTeacherAge(Integer teacherAge) {
this.teacherAge = teacherAge;
}
public Course getCourse() {
return course;
}
public void setCourse(Course course) {
this.course = course;
}
public List<Student> getStudents() {
return students;
}
public void setStudents(List<Student> students) {
this.students = students;
}
}

json 字符串与 javaBean 之间的转换推荐使用 TypeReference<T> 这个类,使用泛型可以更加清晰,当然也有其它的转换方式,这里就不做探讨了。
示例 2.1-json 字符串 - 简单对象型与 javaBean 之间的转换

/**
* json字符串-简单对象与JavaBean_obj之间的转换
*/
public static void testJSONStrToJavaBeanObj(){
Student student = JSON.parseObject(JSON_OBJ_STR, new TypeReference<Student>() {});
//Student student1 = JSONObject.parseObject(JSON_OBJ_STR, new TypeReference<Student>() {});//因为JSONObject继承了JSON,所以这样也是可以的
System.out.println(student.getStudentName()+":"+student.getStudentAge());
}

示例 2.2-json 字符串 - 数组类型与 javaBean 之间的转换

/**
* json字符串-数组类型与JavaBean_List之间的转换
*/
public static void testJSONStrToJavaBeanList(){
ArrayList<Student> students = JSON.parseObject(JSON_ARRAY_STR, new TypeReference<ArrayList<Student>>() {});
//ArrayList<Student> students1 = JSONArray.parseObject(JSON_ARRAY_STR, new TypeReference<ArrayList<Student>>() {});//因为JSONArray继承了JSON,所以这样也是可以的
for (Student student : students) {
System.out.println(student.getStudentName()+":"+student.getStudentAge());
}
}

示例 2.3 - 复杂 json 格式字符串与与 javaBean 之间的转换

/**
* 复杂json格式字符串与JavaBean_obj之间的转换
*/
public static void testComplexJSONStrToJavaBean(){
Teacher teacher = JSON.parseObject(COMPLEX_JSON_STR, new TypeReference<Teacher>() {});
//Teacher teacher1 = JSON.parseObject(COMPLEX_JSON_STR, new TypeReference<Teacher>() {});//因为JSONObject继承了JSON,所以这样也是可以的
String teacherName = teacher.getTeacherName();
Integer teacherAge = teacher.getTeacherAge();
Course course = teacher.getCourse();
List<Student> students = teacher.getStudents();
}

对于 TypeReference<T>,由于其构造方法使用 protected 进行修饰,所以在其他包下创建其对象的时候,要用其实现类的子类:new TypeReference<Teacher>() {}
此外的:
1,对于 JSON 对象与 JSON 格式字符串的转换可以直接用 toJSONString () 这个方法。
2,javaBean 与 JSON 格式字符串之间的转换要用到:JSON.toJSONString (obj);
3,javaBean 与 json 对象间的转换使用:JSON.toJSON (obj),然后使用强制类型转换,JSONObject 或者 JSONArray。
最后说一点,我们作为程序员,研究问题还是要仔细深入一点的。当你对原理了解的有够透彻,开发起来也就得心应手了,很多开发中的问题和疑惑也就迎刃而解了,而且在面对其他问题的时候也可做到触类旁通。当然在开发中没有太多的时间让你去研究原理,开发中要以实现功能为前提,可等项目上线的后,你有大把的时间或者空余的时间,你大可去刨根问底,深入的去研究一项技术,为觉得这对一名程序员的成长是很重要的事情。
fastJson 对于 json 格式字符串,json 对象及 javaBean 之间的相互转换
https://www.cnblogs.com/cdf-opensource-007/p/7106018.html
fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化
fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化
在开发过程中,经常需要和前端交互数据,数据交互的格式都是JSON,在此过程中免不了json字符串与JSON对象互相转换,自己在这一方面的概念总是很混乱,最近看源码和博客,在此记录一下。注意:全程用的是fastjson
首先JSON有两种格式,一种是对象格式,一种是对象数组。
在JSON使用中主要的3个类:JSON,JSONObjec,JSONArray
其中JSONObjec
和JSONArray
继承于JSON
的。
JSON对象(JSONObject)
{"id":1,"name":"chen"}
JSON对象数组(JSONArray)
[ {"id":1,"name":"chen"}, {"id":2,"name":"张三"}]
下面直接进入正题:
Java Bean 和JSON字符串的互转
Java Bean 转 JSON字符串
Java Bean是指Java中的一个普通对象(实体类)例如:
public class Student{ private String name; // 姓名 private Integer age; // 年龄 public void setName(String name){ this.name = name; } public String getName(){ return name; } public void setAge(Integer age){ this.age = age; } public Integer getAge(){ return age; } @Override public String toString() { return "Student{" + "name=''" + name + ''\'''' + ", age=" + age + ''}''; }}
使用JSON
类的toJSONString()
方法,实现JSON
对象转化为JSON
字符串和Java Bean
对象转化为JSON
字符串。仔细观察源码发现,该方法经过多次重载,但最终都是实现JSON
对象转化为JSON
字符串和Java Bean
对象转化为JSON
字符串。
@Testpublic void BeanToJSONTest(){ Student student = new Student(); student.setName("小明"); student.setAge(20); String s1 = JSON.toJSONString(student); St..............
jackson 实体转json json字符串转实体
@Autowired
ObjectMapper objectMapper;
//实体转json
String data = ""; //一个json串
Student stu = new Student ();
stu = objectMapper.readValue(data, Student .class);// json字符串转实体
public <T> String writeAsString(T t) throws JsonProcessingException {
return objectMapper.writeValueAsString(t);
}
String aa = writeAsString(stu);
//json转实体
public <T> T readValue(String data) {
try {
return objectMapper.readValue(data, new TypeReference<T>() {
});
} catch (Exception e) {
// TODO: handle exception
}
return null;
}
关于Jackson-Java bean到JSON字符串:大写变量在JSON中转换为小写和java对象转json首字母大写的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于FastJson 对于 JSON 格式字符串、JSON 对象及 JavaBean 之间的相互转换、fastJson 对于 json 格式字符串,json 对象及 javaBean 之间的相互转换、fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化、jackson 实体转json json字符串转实体的相关信息,请在本站寻找。
本文标签: