GVKun编程网logo

Jackson-Java bean到JSON字符串:大写变量在JSON中转换为小写(java对象转json首字母大写)

21

如果您想了解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首字母大写)

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

小编典典

使用了以下罐子:

  1. 杰克逊核心2.7.4.jar
  2. 杰克逊注释2.7.4.jar
  3. 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 对象及 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 之间的相互转换

fastJson 对于 json 格式字符串,json 对象及 javaBean 之间的相互转换

https://www.cnblogs.com/cdf-opensource-007/p/7106018.html

fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化

fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化

fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化

在开发过程中,经常需要和前端交互数据,数据交互的格式都是JSON,在此过程中免不了json字符串与JSON对象互相转换,自己在这一方面的概念总是很混乱,最近看源码和博客,在此记录一下。注意:全程用的是fastjson

首先JSON有两种格式,一种是对象格式,一种是对象数组。

在JSON使用中主要的3个类:JSONJSONObjecJSONArray

其中JSONObjecJSONArray继承于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字符串转实体

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字符串转实体的相关信息,请在本站寻找。

本文标签: