如何修改json字符串中某个key对应的value值

字符串转json ,下面这种方式会把原有的字符串顺序打乱,所以不采用

JSONObject jsonObject = JSON.parseObject(你的JSON);

要先转为LinkedHashMap,再转json

LinkedHashMap<String, Object> json = JSON.parseObject(你的JSON,LinkedHashMap.class,Feature.OrderedField);
JSONObject jsonObject=new JSONObject(true);
jsonObject.putAll(json);
//更新频度
 jsonObject.put("key", "P");//替换key对应的值
 String new_text = jsonObject.toJSONString();

此时new_text就是已经更新过后的新json字符串

补充知识:java中修改嵌套json字符串中的value,比较精准的方法

我就废话不多说了,大家还是直接看代码吧~

public class Test {

  /**
   * @param args the command line arguments
   */
  public static void main(String[] args) throws JSONException{
    // TODO code application logic here.
    //已有Json格式字符串{"id":"10001","name":"肉类","menus":[{"name":"牛肉","price":"30.00"},{"name":"羊肉","price":"20.00"}]}
    //需求是将牛肉的price改为50.00
    String json="{\"id\":\"10001\",\"name\":\"肉类\",\"menus\":[{\"name\":\"牛肉\",\"price\":\"30.00\"},{\"name\":\"羊肉\",\"price\":\"20.00\"}]}";
    System.out.println("1. "+json);
    JSONObject kindJson=new JSONObject(json);//将string转为jsonobject
    String menuJson=kindJson.getString("menus");//获取到menus
    JSONArray menus=new JSONArray(menuJson);//再将menuJson转为jsonarray
    System.out.println("2. "+menus);
    JSONObject beefJson= menus.getJSONObject(0);//根据下标0(类似数组)获取牛肉的json对象
    beefJson.put("price", "50.00");//直接提交price的key,如果该key存在则替换value
    menus.put(0, beefJson);//覆盖掉原来的值

    System.out.println("3. "+beefJson);
    System.out.println("4. "+menus);//替换完后打印查看
    kindJson.put("menus", menus);//再将menus覆盖

    json=kindJson.toString();//赋值
    System.out.println("5. "+json);//替换完成
  }
}

执行结果:

可见最后json字符串中的值被修改了,但是字段的顺序却发生了变化,因为JsonObject是用HashMap来存储的,

并不是按顺序进行存储,如果有这个需求的话可以自定义JsonObject,用有序的LinkedHashMap代替HashMap。

这里用的是将json字符串转换为json的对象,

然后逐步将需要修改的对象取出来,利用put将原来的值覆盖完后再逐步提交回去。

以上这篇如何修改json字符串中某个key对应的value值就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Java 手动解析不带引号的JSON字符串的操作

    1 需求说明 项目中遇到了一批不带引号的类JSON格式的字符串: {Name:Heal,Age:20,Tag:[Coding,Reading]} 需要将其解析成JSON对象, 然后插入到Elasticsearch中, 当作Object类型的对象存储起来. 在对比了阿里的FastJson.Google的Gson, 没找到想要的功能 ( 可能是博主不够仔细, 有了解的童学留言告诉我下呀

  • Java Json字符串的双引号("")括号如何去掉

    我就废话不多说了,大家还是直接看代码吧~ //自己copy试一下比什么都好 public static void main(String[] args) { String json = "[\"name\":\"value\",\"value1\"]"; String t = json.replaceAll("\\\"",""); System.out.println(&quo

  • Java 格式化输出JSON字符串的2种实现操作

    1 使用阿里的FastJson 1.1 项目的pom.xml依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.58</version> </dependency> 1.2 Java示例代码 (1) 导入的包: com.alibaba.fastjson.JSON; import

  • Java使用JSON传递字符串注意事项解析

    一.问题由来 项目开发中,由于实际需要将某一个功能模块抽取成了一个单独的服务,其他地方需要调用的时候,通过Spring提供的RestTemplate类发送请求进行调用. 经过测试这种方法完全可行,我和同事都能够正常使用,可是有一次调用一个方法时始终出现问题.调用方的参数可以正常传递,可是被调用方却使用匹 配不上,寻找了很久都没找到原因. 二.问题分析 问题主要在传递的invoType参数上,在被调用方一直匹配不上,两边都是使用switch语句进行匹配,数据类型为String类型,调用方的swit

  • JSON字符串操作移除空串更改key/value的介绍

    对于JSON字符串的操作.移除键值.添加属性. //删除JSON对象value值 var json=[.....]; delete(json['key']); 或者 delete(json.key); //添加对象object json.object=value; 或者 json['object']=value; 如果数据是查询数据库得到的,那么可能会存在空值,for循环JSON数据挨个移除空值或者操作数据比较繁琐. 这时候可以使用for-in来循环属性 去除空值或者操作数据. function

  • Java fastjson解析json字符串实现过程解析

    jar的下载 maven方式 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.67</version> </dependency> jar包 百度云链接:https://pan.baidu.com/s/1x_C4ii3OFMXbsoqikmZKGw 提取码:ku6z 示例 解析j

  • 后端将数据转化为json字符串传输的方法详解

    前言 在写后端的c层返回字段断言的时候,进行对于user对象的isAdmin字段断言.相关实体类字段如下 /** * 是否是超级管理员 */ private Boolean isAdmin = false; public Boolean getAdmin() { return isAdmin; } public void setAdmin(Boolean admin) { isAdmin = admin; } 当我断言时,我断言isAdmin字段存在 但是他报错说不存在$.isAdmin. 后端

  • 详解Springboot之接收json字符串的两种方式

    第一种方式.通过关键字段@RequestBody,标明这个对象接收json字符串.还有第二种方式,直接通过request来获取流.在spring中,推荐使用. 代码地址 https://gitee.com/yellowcong/springboot-demo/tree/master/springboot-json 项目结构 其实项目里面没啥类容,就是一个控制器和pom.xml配置 配置fastjson 添加fastjson的依赖到pom.xml中 <dependency> <groupI

  • 如何修改json字符串中某个key对应的value值

    字符串转json ,下面这种方式会把原有的字符串顺序打乱,所以不采用 JSONObject jsonObject = JSON.parseObject(你的JSON); 要先转为LinkedHashMap,再转json LinkedHashMap<String, Object> json = JSON.parseObject(你的JSON,LinkedHashMap.class,Feature.OrderedField); JSONObject jsonObject=new JSONObjec

  • 如何修改JSON字符串中的敏感信息

    目录 修改JSON字符串中的敏感信息 项目要求把json字符串里面的敏感信息加密 清除敏感字符串内容 分析 解决思路 修改JSON字符串中的敏感信息 项目要求把json字符串里面的敏感信息加密 比如手机号身份证之类,这就要求遍历json,并且覆盖所有的敏感key,原本以为挺难的,静下心来想了想,代码修修改改大约一个小时搞定了,其实是一个简单的递归,跟遍历一个目录并输出所有文件名一样 废话少说,直接贴代码和测试用例. package com.ucredit.test; import com.ali

  • 替换json对象中的key最佳方案

    JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据.简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率. 看到标题你可能会想,如此简单的问题值得去探究吗?如果我有一个json object,只需下面简单的几行代码就可以完成: var o

  • Python查找不限层级Json数据中某个key或者value的路径方式

    最近项目中有一个小需求,查找json文件中某个key或者value的路径,所以就写了一个简单的小脚本,比较粗糙. #!/usr/bin/env python3 # -*- coding:utf-8 -*- ''' @author: funcups ''' from logzero import logger import ast class HandleJson(): def __init__(self, data): if data == None: logger.error('请输入json

  • PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠

    通过AJAX传到PHP的json字符串有时候加上反斜杠"\"来转义,PHP处理时需要先去掉反斜杠,然后再json_decode. $str = stripslashes($_POST['json']); $arr = json_decode($str,true); PS:php get抓取json怎样去除双引号前面的反斜杠 你这个不算标准的JSON格式数据,可以先将\"替换成"即可. 再用json_decode()系统函数将其转为json对象,如需转为数组加上第二个

  • Mysql 直接查询存储的Json字符串中的数据

    我们平时使用mysql,出于项目需求,可能需要直接将Java对象或者一个大json,直接存到表中的某个字段中:使用的时候再查出来,反序列化到对象或者一个Map中,方便我们操作: 大多时候,我们可能并不需要所有的数据,只想使用这个对象或者json中的某一个值,来做逻辑判断而已 那我们可以这样做,例如:原来我们需要查出某个字段的数据,然后反序列化成对象再调用其中的一个属性 SELECT content FROM table_name WHERE id = 32; 查询结果:列名:content结果:

  • java json字符串转JSONObject和JSONArray以及取值的实例

    java json字符串转JSONObject和JSONArray以及取值的实例 实现代码: import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class JsonTest { public static void main(String[] args) { String joStr = "{name:\"张三\",age:\"20\"}"; //将json字符

  • Java如何从json字符串中获取某个值详解

    目录 Java从json串中获取某个值 使用org.json进行解析 使用com.alibaba.fastjson进行解析 总结 Java从json串中获取某个值 java对象是不能直接传输,只有json对象 转成字符串 可以进行传输 故 传输中都是json进行的 接收到json数据之后java在进行解析转换成为字符串.且json适用于很多语言之间的传输 json本质上就是一个map. 对应有两种json进行解析 首先就是先对json的合法性进行验证 是否可以进行解析 点击这里 进行json解析

  • JS遍历Json字符串中键值对先转成JSON对象再遍历

    1.将Json字符串转换成JSON对象 var t='{"firstName": "cyra", "lastName": "richardson"}'; var obj = eval('(' + t + ')'); 2.遍历读取键值对 for(var str in obj){ alert(str+'='+obj[str]); }

随机推荐