json字符串的处理

这篇具有很好参考价值的文章主要介绍了json字符串的处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【1】解析json字符串

java处理json格式字符串,首先转成 JSONArray 或 JSONObject 类型(如果有实际对象类的话,也可以直接转成对象)

(1)如果json格式字符串 ,最外层 是 中括号,表示数组,就使用方法

JSONArray array = JSONArray.parseArray(text);

(2)如果json格式字符串,最外层是 大括号,表示对象,就是用方法

JSONObject result = JSONArray.parseObject(text);

(3)数组 和 对象可以相互嵌套

就相当于 JSONArray 和 JSONObject 可以相互嵌套, JSON对象的用法和java中 List Map 用法是一样的!
1-可以通过JSONArray循环获取每一项的值 有get 和 add 方法 取值 赋值
2-JSONObject 可以 通过 get 和 put 方法取值赋值
处理完数据后,还可以通过 toJSONString方法转为字符串

(4)java遍历修改json数组里的某个字段值

JSONArray feedetailList = data.getJSONArray("feedetailList");
for (int i = 0; i < feedetailList.size(); i++) {
    feedetailList.getJSONObject(i).put("psnNo",data.getString("psnNo"));
}

(5)java遍历修改更复杂的嵌套json数组里的某个字段值

(1)因为没有具体的对象,所以将json直接转成json数组JSONObject
(2)在取嵌套的内容时,如果是数组就用getJSONArray,如果是对象就用getJSONObject
(3)要往数组里存入值就用add,取值就用get;要往对象里存入值就用set,取值就用get

// 实时更新数据
DataModelRelation dataModelRelation = indDataModel.getDataModelRelation();
String layout = dataModelRelation.getLayout();
// 解析 JSON 字符串为 JSONObject
JSONObject jsonObject = new JSONObject(layout);

// 获取最底层的 JSONArray
JSONArray layoutInfo = jsonObject.getJSONArray("cells");
for (int i = 0; i < layoutInfo.size(); i++) {
    JSONObject cell = layoutInfo.getJSONObject(i);
    JSONObject data = cell.getJSONObject("data");
    if (ObjectUtil.isNotNull(data)) {
        String id = data.get("id").toString();
        if (ObjectUtil.isNotNull(id)) {
            IndTable indTable = iIndTableRepo.queryById(Long.valueOf(id));
            if (ObjectUtil.isNotNull(indTable)) {
                layoutInfo.getJSONObject(i).getJSONObject("data").set("tableNameZh",indTable.getTableNameZh());
            }
        }
    }
}
jsonObject.set("cells",layoutInfo);
dataModelRelation.setLayout(JSONUtil.toJsonStr(jsonObject));
indDataModel.setDataModelRelation(dataModelRelation);

【2】JSONUtil工作介绍

(1)JSON字符串创建

JSONUtil.toJsonStr可以将任意对象(Bean、Map、集合等)直接转换为JSON字符串。 如果对象是有序的Map等对象,则转换后的JSON字符串也是有序的。

    /**
     * 转换为JSON字符串
     * <p>
     * 被转为JSON的对象
     *
     * @return JSON字符串
     */
    @Test
    void toJsonStrTest() {
        //map
        SortedMap<Object, Object> sortedMap = new TreeMap<Object, Object>() {
            private static final long serialVersionUID = 1L;
            {
                put("attributes", "a");
                put("b", "b");
                put("c", "c");
            }
        };
        //对象
        Student beanString = new Student(1, 1, 1, "张三");

        //集合
        List<Student> list = new ArrayList<>();
        list.add(new Student(1, 1, 1, "张三"));
        list.add(new Student(1, 1, 2, "李四"));
        list.add(new Student(1, 1, 3, "王五"));

        System.out.println("JSONUtil.toJsonStr(beanString) = " + JSONUtil.toJsonStr(beanString));
        System.out.println("JSONUtil.toJsonStr(sortedMap) = " + JSONUtil.toJsonStr(sortedMap));
        System.out.println("JSONUtil.toJsonStr(list) = " + JSONUtil.toJsonStr(list));
    }

结果

JSONUtil.toJsonStr(beanString) = {"gradeId":0,"studentId":1,"termId":1,"classId":1,"name":"张三"}
JSONUtil.toJsonStr(sortedMap) = {"attributes":"a","b":"b","c":"c"}
JSONUtil.toJsonStr(list) = [{"gradeId":0,"studentId":1,"termId":1,"classId":1,"name":"张三"},
{"gradeId":0,"studentId":2,"termId":1,"classId":1,"name":"李四"},
{"gradeId":0,"studentId":3,"termId":1,"classId":1,"name":"王五"}]

如果我们想获得格式化后的JSON,则:

JSONUtil.toJsonPrettyStr(object);

System.out.println("JSONUtil.toJsonPrettyStr(sortedMap) = "
 + JSONUtil.toJsonPrettyStr(sortedMap));

结果

JSONUtil.toJsonPrettyStr(sortedMap) = {
    "attributes": "a",
    "b": "b",
    "c": "c"
}

(2)JSON字符串解析

/**
 * JSON字符串转JSONObject对象
 * <p>
 * JSON字符串
 *
 * @return JSONObject
 */
@Test
void Test() {
    String html = "{\"name\":\"Something must have been changed since you leave\"}";
    JSONObject jsonObject = JSONUtil.parseObj(html);
    System.out.println("jsonObject.getStr(\"name\") = " + jsonObject.getStr("name"));
}

结果

jsonObject.getStr("name") = Something must have been changed since you leave

(3)XML字符串转换为JSON

    /**
     * XML字符串转为JSONObject
     *
     *  XML字符串
     * @return JSONObject
     */
    @Test
    void parseFromXmlTest() {
        String s = "<sfzh>123</sfzh><sfz>456</sfz><name>aa</name><gender>1</gender>";
        JSONObject json = JSONUtil.parseFromXml(s);
        System.out.println("json.get(\"sfzh\") = " + json.get("sfzh"));
        System.out.println("json.get(\"name\") = " + json.get("name"));

    }

结果

json.get("sfzh") = 123
json.get("name") = aa

(4)JSON转换为XML

    /**
     * 转换为XML字符串
     *
     * @param json JSON
     * @return XML字符串
     */
    @Test
    void toXmlStrTest() {
        final JSONObject put = JSONUtil.createObj()
                .set("aaa", "你好")
                .set("键2", "test");

// <aaa>你好</aaa><键2>test</键2>
        final String s = JSONUtil.toXmlStr(put);
        System.out.println("s = " + s);

    }

结果

s = <aaa>你好</aaa><2>test</2>

(5)JSON转Bean

我们先定义两个较为复杂的Bean(包含泛型)

    @Data
    public class ADT {
        private List<String> BookingCode;
    }

    @Data
    public class Price {
        private List<List<ADT>> ADT;
    }

    /**
     * JSON字符串转为实体类对象,转换异常将被抛出
     *
     * @param <T>        Bean类型
     * @param jsonString JSON字符串
     * @param beanClass  实体类对象
     * @return 实体类对象
     * @since 3.1.2
     */
    @Test
    void toBeanTest() {
        String json = "{\"ADT\":[[{\"BookingCode\":[\"N\",\"N\"]}]]}";
        Price price = JSONUtil.toBean(json, Price.class);
        System.out.println("price = " + price);
    }

(6)常见JSON操作方法

put(key, value): 向JSON对象中添加键值对。
get(key): 获取JSON对象中指定键的值。
getString(key): 获取JSON对象中指定键的字符串值。
getInt(key): 获取JSON对象中指定键的整数值。
getJSONObject(key): 获取JSON对象中指定键的嵌套JSON对象。
getJSONArray(key): 获取JSON对象中指定键的JSON数组。
toString(): 将JSON对象转换为字符串。
parse(jsonString): 解析JSON字符串为JSON对象。
toBean(jsonString,class):将JSON转换为Java对象
toJsonStr(object):将Java对象转换为JSON字符串

使用实例文章来源地址https://www.toymoban.com/news/detail-827219.html

javaCopy codeimport com.example.JSONUtil; // 假设这是的JSONUtil类

public class JSONUtilExample {

    public static void main(String[] args) {
        // 创建JSON对象
        JSONUtil jsonUtil = new JSONUtil();
        jsonUtil.put("name", "John");
        jsonUtil.put("age", 30);

        // 将JSON转为字符串
        String jsonString = jsonUtil.toString();
        System.out.println("JSON String: " + jsonString);

        // 解析JSON字符串
        JSONUtil parsedJSON = JSONUtil.parse(jsonString);
        String name = parsedJSON.getString("name");
        int age = parsedJSON.getInt("age");

        System.out.println("Name: " + name);
        System.out.println("Age: " + age);
        
        //使用JSONUtil.toBean将JSON转换为Java对象
        //假设从某个来源获取了一个JSON字符串
        String jsonString = "{\"name\":\"John\",\"age\":30}";
        Person person = JSONUtil.toBean(jsonString, Person.class);
        
        // 使用JSONUtil.toJsonStr将Java对象转换为JSON字符串
        Person person = new Person("John", 30, new String[]{"Reading", "Gaming"});
        String jsonStr = JSONUtil.toJsonStr(person);
    }
    
}

到了这里,关于json字符串的处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python-字符串的处理

    值得注意的是,字符串的切片跟列表的切片是一样的用法,同样也是产生一个新的对象,可以通过id来查看。 使用: capitalize()函数 使用: upper()函数 使用: lower()函数 使用: swapcase()函数 使用: center()函数 使用: find()函数通过元素找索引,找到返回索引,找不到返回-1。 i

    2024年02月07日
    浏览(35)
  • Python字符串处理技巧大全

    1.字符串的连接和合并 连接和合并 相加 //两个字符串可以很方便的通过\\\'+\\\'连接起来 合并//用join方法 2.字符串的切片和相乘 相乘//比如写代码的时候要分隔符,用python很容易实现 line=\\\'*\\\'*30 print(line) 切片 3.字符串的分割 普通的分割,用split split只能做非常简单的分割,而且不支

    2023年04月14日
    浏览(31)
  • python熟悉python基础语法,了解html网络结构,了解json格式数据,含有字符串

    Python网络爬虫是利用Python编写的程序,通过自动化地访问网页、解析html或json数据,并提取所需信息的技术。下面将详细介绍一些与Python网络爬虫相关的重要知识点。   变量和数据类型:学习如何声明变量以及Python中的常用数据类型,如数字、字符串、列表、字典等。 条件语

    2024年02月10日
    浏览(45)
  • 视觉学习(七)---Flask 框架下接口调用及python requests 实现json字符串传输

    在项目实施过程中需要与其他系统进行接口联调,将图像检测的结果传递给其他系统接口,进行逻辑调用。这中间的过程可以通过requests库进行实现。 1.安装requests库 2.postman 接口测试 我们先通过postman 了解下接口调用,通过postman新增一个接口: 新增Collection -- 选中Collection,右

    2024年02月13日
    浏览(45)
  • mysql 解析json字符串、数组字符串、json数组字符串

    笔者使用mysql 5.7进行了一次json字符串的解析,因为一直在搞大数据相关的数据库、olap等,太久没有用mysql5.x的版本,一些函数已经不知道支不支持,我的同事建议我使用like、rlike模糊匹配的方式,身为数据人我不太喜欢用这种手段,因为他们比较低效。于是我想这里总结一下

    2024年02月16日
    浏览(55)
  • chatgpt赋能python:Python内置字符串处理方法

    Python是一种高级编程语言,拥有丰富的库和模块,方便开发者进行各种编程操作。同时,Python也提供了许多内置的字符串处理方法,使得字符串操作变得更加方便快捷。 在Python中,字符串可以通过单引号、双引号或三引号进行定义。例如: 可以使用索引来访问字符串中的单

    2024年02月07日
    浏览(49)
  • 【自然语言处理】NLP入门(一):1、正则表达式与Python中的实现(1):字符串构造、字符串截取

       语言 是一种使用具有共同处理规则的沟通指令的广义概念,这些指令可以通过视觉、声音或触觉等方式传递。语言可以分为自然语言、动物语言和计算机语言。    自然语言 是人类发展过程中形成的一种信息交流方式,它包括口语和书面语,并且反映了人类的思想。

    2024年03月12日
    浏览(145)
  • python之文件操作、对.txt文本文件的操作(读、写、修改、复制、合并)、对json文本文件的操作、json字符串与字典的相互转换。

    注意:本篇所讲的文件操作,都是对后缀为.txt、.json文件进行的操作。 1、json其实就是一个 文件的格式 ,像.txt一样,json也是一个 纯文本文件 。 与.txt不同的是, json常用来存放有键值对的数据,写法上像python中的字典一样, 但与字典不同的是 ,字典是一个数据类型,且

    2024年02月16日
    浏览(48)
  • jquery和php json字符串转数组对象 和 数组对象转json字符串

    要实现从对象转换为 JSON 字符串,使用 JSON.stringify( ) 方法: 要实现从 JSON 转换为对象,使用 JSON.parse() 方法: 数组变字符串 字符串变数组 json转数组   json_decode(  string $json ,  bool $assoc = false ,  int $depth = 512 ,  int $options = 0 ) $json:待解码的 json string 格式的字符串。这个函数

    2024年02月13日
    浏览(117)
  • Python - 字符串转日期时间,格式的处理以及时间加减计算

    1,字符串转日期 运行结果: 注意事项: a, 日期时间转换时,读取的格式要和给定的格式一样,否则会因为无法匹配而报错 【格式1 和 格式2 需要保持一直】 b, 转换之后的日期格式会自动加上\\\'秒\\\'位 2,时间格式处理 根据自己的需求,通过strftime( )函数内的控制符把日期时间格

    2024年02月12日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包