精华内容
下载资源
问答
  • 2. JSON字符串增加额外字段 假如我们有这样结构的JSON: { "username":"felord.cn", "age":18 } 期望增加一个性别字段gender: { "username": "felord.cn", "age": 18, "gender": "male" } 首

    1. 前言

    日常开发中少不了JSON处理,少不了需要在JSON中添加额外字段或者删除特定字段的需求。今天我们就使用Jackson类库来实现这个功能。

    2. JSON字符串增加额外字段

    假如我们有这样结构的JSON:

    {
        "username":"felord.cn",
        "age":18
    }
    

    期望增加一个性别字段gender:

    {
        "username": "felord.cn",
        "age": 18,
        "gender": "male"
    }
    

    首先使用ObjectMapper加载JSON字符串,为ObjectNode:

    ObjectNode jsonNodes = objectMapper.readValue(json, ObjectNode.class);
    
    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

    ObjectNode提供了很多操作JSON属性的方法:

    • get 根据索引或者字段名获取对应的JsonNode
    • put系列方法 提供了将基本类型、null值、对象、数组、原始值添加到JSON的能力。

    正好我们可以借助于put方法来完成额外新增字段,完整的代码片段:

    //java项目www.fhadmin.org
    String json = "{\n" +
            "    \"username\":\"felord.cn\",\n" +
            "    \"age\":18\n" +
            "}";
    
    ObjectMapper objectMapper = new ObjectMapper();
    
    ObjectNode jsonNodes = objectMapper.readValue(json, ObjectNode.class);
    jsonNodes.put("gender", "male");
    String newJson = objectMapper.writeValueAsString(jsonNodes);
    // newJson = {"username":"felord.cn","age":18,"gender":"male"}
    

    3. 对象转JSON时新增字段

    有时候我们定义的对象没有包含特定的字段,但是转成JSON时同样需要有额外的字段。跟章节2类似,,只不过提供的不再是JSON字符串而是Java对象:

    /**
     * @author java项目www.fhadmin.org
     * @since 11:02
     */
    @Data
    public class User {
        private String username;
        private Integer age;
    }
    

    其实思路很明确,只要我们能够将对象转换为ObjectNode就可以如法炮制。ObjectMapper提供了valueToTree方法可以实现这一点,所以对象转JSON时新增字段完整的DEMO为:

    User user = new User();
    user.setUsername("felord.cn");
    user.setAge(18);
    
    //java项目www.fhadmin.org
    ObjectMapper objectMapper = new ObjectMapper();
    ObjectNode jsonNodes = objectMapper.valueToTree(user);
    jsonNodes.put("gender", "male");
    String newJson = objectMapper.writeValueAsString(jsonNodes);
    // newJson = {"username":"felord.cn","age":18,"gender":"male"}
    

    4. 移除属性

    无论是JSON字符串或者Java对象转JSON时,移除属性跟上面的思路一样,只需要调用remove方法即可,这里不再演示。

    5. 扩展

    上面的所有操作都是借助于了Jackson中的JsonNode派生的JSON节点类完成的,关系如下:

    JsonNode

    JsonNode可以细粒度的访问JSON信息,提供了非常有用的JSON对象操作API,但是很多人在有相关需求的时候并不能够想到它,所以你不需要具体的记住这些API,只需要记住它可以操作JSON即可。

    6. 总结

    本文对Jackson动态的增删改查JSON进行了介绍,牵引出一个很重要的操作工具JsonNode。充分利用手中已有的资源来解决问题

    展开全文
  • 1. 前言日常开发中少不了JSON处理,少不了需要在JSON中...2. JSON字符串增加额外字段假如我们有这样结构的JSON:{ "username":"felord.cn", "age":18 }期望增加一个性别字段gender:{ "username": "felord.cn", ...

    1. 前言

    日常开发中少不了JSON处理,少不了需要在JSON中添加额外字段或者删除特定字段的需求。今天我们就使用Jackson类库来实现这个功能。

    2. JSON字符串增加额外字段

    假如我们有这样结构的JSON:

    {
        "username":"felord.cn",
        "age":18
    }

    期望增加一个性别字段gender:

    {
        "username": "felord.cn",
        "age": 18,
        "gender": "male"
    }

    首先使用ObjectMapper加载JSON字符串,为ObjectNode:

    ObjectNode jsonNodes = objectMapper.readValue(json, ObjectNode.class);

    ObjectNode提供了很多操作JSON属性的方法:

    • get 根据索引或者字段名获取对应的JsonNode
    • put系列方法 提供了将基本类型、null值、对象、数组、原始值添加到JSON的能力。

    正好我们可以借助于put方法来完成额外新增字段,完整的代码片段:

    String json = "{n" +
            "    "username":"felord.cn",n" +
            "    "age":18n" +
            "}";
    
    ObjectMapper objectMapper = new ObjectMapper();
    
    ObjectNode jsonNodes = objectMapper.readValue(json, ObjectNode.class);
    jsonNodes.put("gender", "male");
    String newJson = objectMapper.writeValueAsString(jsonNodes);
    // newJson = {"username":"felord.cn","age":18,"gender":"male"}

    3. 对象转JSON时新增字段

    有时候我们定义的对象没有包含特定的字段,但是转成JSON时同样需要有额外的字段。跟章节2类似,,只不过提供的不再是JSON字符串而是Java对象:

    /**
     * @author felord.cn
     * @since 11:02
     */
    @Data
    public class User {
        private String username;
        private Integer age;
    }

    其实思路很明确,只要我们能够将对象转换为ObjectNode就可以如法炮制。ObjectMapper提供了valueToTree方法可以实现这一点,所以对象转JSON时新增字段完整的DEMO为:

    User user = new User();
    user.setUsername("felord.cn");
    user.setAge(18);
    
    ObjectMapper objectMapper = new ObjectMapper();
    ObjectNode jsonNodes = objectMapper.valueToTree(user);
    jsonNodes.put("gender", "male");
    String newJson = objectMapper.writeValueAsString(jsonNodes);
    // newJson = {"username":"felord.cn","age":18,"gender":"male"}

    4. 移除属性

    无论是JSON字符串或者Java对象转JSON时,移除属性跟上面的思路一样,只需要调用remove方法即可,这里不再演示。

    5. 扩展

    上面的所有操作都是借助于了Jackson中的JsonNode派生的JSON节点类完成的,关系如下:

    3dd1c5bc59acd0269a9bd30131ac1752.png

    JsonNode可以细粒度的访问JSON信息,提供了非常有用的JSON对象操作API,但是很多人在有相关需求的时候并不能够想到它,所以你不需要具体的记住这些API,只需要记住它可以操作JSON即可。

    6. 总结

    本文对Jackson动态的增删改查JSON进行了介绍,牵引出一个很重要的操作工具JsonNode。充分利用手中已有的资源来解决问题,无需自己造轮子,也不必引入新的依赖。

    链接:Java对象转JSON时如何动态的增删改查属性
    出处:掘金
    作者: 码农小胖哥
    展开全文
  • JSON字符串增加额外字段 假如我们有这样结构的JSON: { “username”:“felord.cn”, “age”:18 } 期望增加一个性别字段gender: { “username”: “felord.cn”, “age”: 18, “gender”: “male” } 首先使用...
    1. JSON字符串增加额外字段
      假如我们有这样结构的JSON:

    {
    “username”:“felord.cn”,
    “age”:18
    }
    期望增加一个性别字段gender:

    {
    “username”: “felord.cn”,
    “age”: 18,
    “gender”: “male”
    }
    首先使用ObjectMapper加载JSON字符串,为ObjectNode:

    ObjectNode jsonNodes = objectMapper.readValue(json, ObjectNode.class);
    ObjectNode提供了很多操作JSON属性的方法:

    get 根据索引或者字段名获取对应的JsonNode。
    put系列方法 提供了将基本类型、null值、对象、数组、原始值添加到JSON的能力。
    正好我们可以借助于put方法来完成额外新增字段,完整的代码片段:

    String json = “{\n” +
    " “username”:“felord.cn”,\n" +
    " “age”:18\n" +
    “}”;

    ObjectMapper objectMapper = new ObjectMapper();

    ObjectNode jsonNodes = objectMapper.readValue(json, ObjectNode.class);
    jsonNodes.put(“gender”, “male”);
    String newJson = objectMapper.writeValueAsString(jsonNodes);
    // newJson = {“username”:“felord.cn”,“age”:18,“gender”:“male”}
    3. 对象转JSON时新增字段
    有时候我们定义的对象没有包含特定的字段,但是转成JSON时同样需要有额外的字段。跟章节2类似,,只不过提供的不再是JSON字符串而是Java对象:

    /**

    • @author felord.cn
    • @since 11:02
      */
      @Data
      public class User {
      private String username;
      private Integer age;
      }
      其实思路很明确,只要我们能够将对象转换为ObjectNode就可以如法炮制。ObjectMapper提供了valueToTree方法可以实现这一点,所以对象转JSON时新增字段完整的DEMO为:

    User user = new User();
    user.setUsername(“felord.cn”);
    user.setAge(18);

    ObjectMapper objectMapper = new ObjectMapper();
    ObjectNode jsonNodes = objectMapper.valueToTree(user);
    jsonNodes.put(“gender”, “male”);
    String newJson = objectMapper.writeValueAsString(jsonNodes);
    // newJson = {“username”:“felord.cn”,“age”:18,“gender”:“male”}
    4. 移除属性
    无论是JSON字符串或者Java对象转JSON时,移除属性跟上面的思路一样,只需要调用remove方法即可,这里不再演示。
    亚马逊测评 www.yisuping.com

    展开全文
  • 1. 前言 日常开发中少不了JSON处理,少不了需要在JSON中...2. JSON字符串增加额外字段 假如我们有这样结构的JSON: { "username":"felord.cn", "age":18 } 期望增加一个性别字段gender: { "username": "felord.cn...

    2d24efa18cbc88bc6b36aaf7c9592191.png

    1. 前言

    日常开发中少不了JSON处理,少不了需要在JSON中添加额外字段或者删除特定字段的需求。今天我们就使用Jackson类库来实现这个功能。

    2. JSON字符串增加额外字段

    假如我们有这样结构的JSON:

    {
        "username":"felord.cn",
        "age":18
    }

    期望增加一个性别字段gender:

    {
        "username": "felord.cn",
        "age": 18,
        "gender": "male"
    }

    首先使用ObjectMapper加载JSON字符串,为ObjectNode:

    ObjectNode jsonNodes = objectMapper.readValue(json, ObjectNode.class);

    ObjectNode提供了很多操作JSON属性的方法:

    • get 根据索引或者字段名获取对应的JsonNode
    • put系列方法 提供了将基本类型、null值、对象、数组、原始值添加到JSON的能力。

    正好我们可以借助于put方法来完成额外新增字段,完整的代码片段:

    String json = "{n" +
            "    "username":"felord.cn",n" +
            "    "age":18n" +
            "}";
    
    ObjectMapper objectMapper = new ObjectMapper();
    
    ObjectNode jsonNodes = objectMapper.readValue(json, ObjectNode.class);
    jsonNodes.put("gender", "male");
    String newJson = objectMapper.writeValueAsString(jsonNodes);
    // newJson = {"username":"felord.cn","age":18,"gender":"male"}

    3. 对象转JSON时新增字段

    有时候我们定义的对象没有包含特定的字段,但是转成JSON时同样需要有额外的字段。跟章节2类似,,只不过提供的不再是JSON字符串而是Java对象:

    /**
     * @author felord.cn
     * @since 11:02
     */
    @Data
    public class User {
        private String username;
        private Integer age;
    }

    其实思路很明确,只要我们能够将对象转换为ObjectNode就可以如法炮制。ObjectMapper提供了valueToTree方法可以实现这一点,所以对象转JSON时新增字段完整的DEMO为:

    User user = new User();
    user.setUsername("felord.cn");
    user.setAge(18);
    
    ObjectMapper objectMapper = new ObjectMapper();
    ObjectNode jsonNodes = objectMapper.valueToTree(user);
    jsonNodes.put("gender", "male");
    String newJson = objectMapper.writeValueAsString(jsonNodes);
    // newJson = {"username":"felord.cn","age":18,"gender":"male"}

    4. 移除属性

    无论是JSON字符串或者Java对象转JSON时,移除属性跟上面的思路一样,只需要调用remove方法即可,这里不再演示。

    5. 扩展

    上面的所有操作都是借助于了Jackson中的JsonNode派生的JSON节点类完成的,关系如下:

    453d1ab1e6a8b23e760843e8a28055a4.png

    JsonNode可以细粒度的访问JSON信息,提供了非常有用的JSON对象操作API,但是很多人在有相关需求的时候并不能够想到它,所以你不需要具体的记住这些API,只需要记住它可以操作JSON即可。

    6. 总结

    本文对Jackson动态的增删改查JSON进行了介绍,牵引出一个很重要的操作工具JsonNode。充分利用手中已有的资源来解决问题,无需自己造轮子,也不必引入新的依赖。好了今天的分享就到这里,多多关注:码农小胖哥 及时获取更多有效的编程干货。

    关注微信公众号:Felordcn 获取更多干货

    展开全文
  • 小弟在做Flex开发时,希望让一个Object对象动态增加属性,例如,我希望让这个Object,拥有这个数组中两个属性: <pre name="code" class="java"> var obj:Object = new Object(); var field:Array = new ...
  • 作者:码农小胖哥来源:码农小胖哥1.前言日常开发中少不了 JSON 处理,少不了需要在 ...2.JSON 字符串增加额外字段假如我们有这样结构的 JSON:{"username":"felord.cn","age":18}期望增加一个性别字段gender:{"usern...
  • 序列化成JSON时,处理动态增加一个sex字段 { "name": "张三", "age": 20, "sex": "男" } 方法一 利用@JsonAnyGetter注解进行扩展User的自定义属性 改造User类: @Data public class User { private String name...
  • 一. 前言 日常开发中少不了JSON处理,少不了需要在JSON中添加额外字段或者删除特定字段的需求。...期望增加一个性别字段gender: { "username": "felord.cn", "age": 18, "gender": "male" } 首先使用ObjectMapp
  • 显然可以提高java灵活性和增加应用场景 核心 Class c=Class.forName("reflection.User"); 这里声明一个类的对象(注意Class中c是大写,class是关键字) 然后获取路径(包名+类名),这样c虽然不是User类...
  • 一个基类的引用不可以访问其子类对象增加的成员(属性和方法)。 可以使用引用变量instance of 类名 来判断该引用型变量所“指向”的对象是否属于该类或该类的子类。 子类的对象可以当做基类的对象来使用称作向上...
  • Java 面对对象

    2019-03-16 14:38:52
    隐藏对象属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。 java里的class 把属性和方法都封装起来,用访问修饰符来控制访问级别。 继承 在一个人现有类的基础上,增加新的方法或重写已...
  • 增加方法 add : 可以向数组属性中依次存储 Object,数组内容存满时,需实现动态扩容(详解在下面)。 删除方法 remove :可以根据数据或下标,从数组属性中删除 Object 数据,删除后,数组后续元素需前移。 查询...
  • 利用内省机制动态获取JavaBean对象监控的属性值(注意这里不能BeanUtils.getProperty(bean, name)这个方法,因为其转化出来的数值都是String类型的) 将变更前的对象和变更后的对象分别保存到Map...
  •  2 一个基类的引用不可以访问其子类对象增加的成员(属性和方法)。  下面的例子可以好好研究一下:   二 、动态绑定(多态):polymoph  动态绑定(多态)是指“在执行期间”(而非编译期)判断所引用...
  • 利用java反射来动态的进行类中方法的基本操作 作为开发项目中,在一定的应用场景下使用类的反射会使代码更简洁,增加复用性,以下写的一个测试可以参考下 此类反射的demo希望对您有用 废话不多说,上代码 创建的...
  • 属于jakarta的一部分,最新的版本是1.1,JXPath的主要功能在于一组java类库来使用XPath的方式访问符合JavaBeans规范的java类、java集合(Collections)、其他具有动态属性对象(如Map、ServletContext等),...
  • java号称万物皆对象,而实例对象的类 本身涵盖两个类型(类中嵌套类先不作分析),一是成员属性(表示这个对象是什么,拥有什么),而是成员方法(表示这个对象的动作,做什么)。 所以,“代理”主要就是在动作这...
  • 动态创建对象

    2014-03-11 11:52:00
    动态操作对象属性 需要给每个类添加元数据 动态创建对象 对原有的类不做任何更改,只需要增加一个宏就能实现动态创建 注:就是为了消除if else 可以在初始化静态成员变量前面加上__decl
  • Java反射与动态代理

    2015-05-07 20:45:00
    java动态代理可以在不改变被调用对象源码的前提下,在被调用方法前后增加自己的操作,极大地降低了模块之间的耦合性。这些都是java的基础知识,要想成为一名合格的程序猿,必须掌握! Java反射机制  JAVA反射机制...
  • Java反射机制允许程序在运行时判断分析任意一个类...java动态代理可以在不改变被调用对象源码的前提下,在被调用方法前后增加自己的操作,极大地降低了模块之间的耦合性,Java动态代理就是利用了反射的特性来实现的。
  • C++动态创建对象

    2017-05-24 14:22:37
     动态操作对象属性  需要给每个类添加原数据  对原有的类不做任何改,只需要增加一个宏就能够动态创建 4.动态创建对象  1)避免if,else编写,增加扩展性  2)将类名放到配置文件中,组件初步  组件A,主程序...
  • 方法:对象具有的各种动态行为 //如何把属性带到方法中使用 //方法重载,增加参数列表 one.eat(one.name); 类单一职责原则----有且只有一个引起功能变化的原因 ​ 如果在一个类中,承担的功能越多,它的交融、耦合...
  • 给某一个类新增加属性

    千次阅读 2017-09-06 16:28:51
    java动态的给对象附加属性。20 假如现在有一个属性配置文件,我需要去读取里面的属性并且是产生一个对象获取它,比如有一个xxx.txt文件: a = 1 b = "hello"   我现在调用如下语句: ...
  • 理解java动态绑定和静态绑定之前需要了解继承和多态的一些相关概念。继承基于已存在的类构造新的类。通过继承获取父类的属性和方法,实现复用。在此基础上可以增加新的属性和方法满足新的需求。 继承是典型的”...
  • java反射机制是一种程序运行时自省的机制,提供了在程序运行时动态的操作任何对象属性和方法的能力。这样不同创建对象,就可以直接调用其中的任意方法。或者动态的获取某个对象的任意属性。而不用在代码中显示的...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 286
精华内容 114
关键字:

java对象动态增加属性

java 订阅