`

把字符串转化为json

阅读更多

把字符串转化为json

任务:

把字符串

{"name":"黄威","age":27,"address":"{\"district\":\"海淀区\",\"street\":\"回龙观西大街\",\"building\":\"通达园\"}","score":0}

转化为:

{"name":"黄威","age":27,"address":{"district":"海淀区","street":"回龙观西大街","building":"通达园"},"score":0}



代码:

    /***
     * 最大限度地当做json 字符串解析<br />
     * 方案:"[...]" 转为[...],并且其中的\"-->"<br />
     * "{...}" 转为{...},并且其中的\"-->"<br />
     * @param jsonStr
     * @return
     */
    public static String toJson(String jsonStr) {
        if (ValueWidget.isNullOrEmpty(jsonStr)) {
            return null;
        }
        if (ValueWidget.isHTMLWebPage(jsonStr)) {
            return jsonStr;
        }

        if (!jsonStr.trim().startsWith("{")) {
            return jsonStr;
        }
        JSONObject jsonObject = null;
        try {
            jsonObject = JSONObject.parseObject(jsonStr);
        } catch (Exception e) {
            e.printStackTrace();
            return jsonStr;
        }

        ParseJsonInfo parseJsonInfo = toJsonObjectRecursive(jsonObject);
        if (parseJsonInfo.isHasString()) {
            return jsonObject.toJSONString();
        }

        return jsonStr;
    }

    /**
     * 最大限度地当做json 字符串解析<br />
     * 方案:"[...]" 转为[...],并且其中的\"-->"<br /
     *
     * @param jsonObject
     * @return
     */
    public static ParseJsonInfo toJsonObjectRecursive(JSONObject jsonObject) {
//        JSONObject jsonObject=JSONObject.parseObject(jsonStr);
        Set<Map.Entry<String, Object>> set = jsonObject.entrySet();
//        boolean hasString=false;
        ParseJsonInfo parseJsonInfo = new ParseJsonInfo();
        for (Map.Entry<String, Object> entry : set) {
//            System.out.println("key :" + entry.getKey());
            Object val = entry.getValue();
            String key = entry.getKey();
//            System.out.println("value :" + val);
            if (val instanceof String) {
                String valString = (String) val;
                valString = valString.trim();
                if (valString.contains(":") && valString.contains("\"")) {//判断是否是json字符串,比如{"username":"whuang"}
//                    hasString=true;
                    if (valString.startsWith("[")) {//"[...]"--数组
                        JSONArray jsonArray = JSONObject.parseArray(valString);
                        parseArray(parseJsonInfo, jsonArray);
                        jsonObject.put(key, jsonArray);
                    } else {//--对象
                        ParseJsonInfo parseJsonInfoTmp = toJsonObjectRecursive(JSONObject.parseObject(valString));
                        jsonObject.put(key, parseJsonInfoTmp.getJsonObject());
                    }

                    parseJsonInfo.setHasString(true);
                }
            } else if (val instanceof JSONObject) {
                ParseJsonInfo parseJsonInfoTmp = toJsonObjectRecursive((JSONObject) val);
                if (parseJsonInfoTmp.isHasString()) {
                    parseJsonInfo.setHasString(true);
                }
            }
//            System.out.println("value type :" +(val instanceof String));
//            String val2=JSONHWUtil.unescapeJava((String)val);
//            System.out.println("val2 :" + val2);

        }
        parseJsonInfo.setJsonObject(jsonObject);
        return parseJsonInfo;
    }

    public static void parseArray(ParseJsonInfo parseJsonInfoParent, JSONArray jsonArray) {
        int size = jsonArray.size();
        for (int i = 0; i < size; i++) {
            Object object = jsonArray.get(i);
            if (object instanceof JSONObject) {
                ParseJsonInfo parseJsonInfoTmp = toJsonObjectRecursive((JSONObject) object);
                if (parseJsonInfoTmp.isHasString()) {
                    parseJsonInfoParent.setHasString(true);
                    jsonArray.set(i, parseJsonInfoTmp.getJsonObject());
                }

            }
        }
    }

  依赖的库:

 <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.6</version>
        </dependency>

 

完整代码 见附件中的com/io/hw/json/JSONHWUtil.java

 

  • 大小: 2.7 MB
0
1
分享到:
评论

相关推荐

    asp字符串转json对象类

    本知识点主要关注如何将ASP中的字符串转换为JSON对象,特别地,这个过程是通过原生的VBScript(Visual Basic Script)实现的,而不是依赖于第三方库。 首先,我们需要理解VBScript中的JSON解析概念。由于ASP.NET...

    JS如何把字符串转换成json

    这篇文章主要介绍了JS如何把字符串转换成json,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Json格式字符串 "{"rows":[{"date":"2018-11-19","money":"22",...

    将string类型xml字符串转为json字符串

    本篇文章将详细讲解如何将string类型的XML字符串转换为JSON字符串,并介绍相关的技术知识。 首先,理解XML和JSON的基本结构是至关重要的。XML是一种树形结构的标记语言,通过标签来定义元素和属性,例如: ```xml ...

    json2.js 字符串转转json对象工具

    1. `JSON.parse()`方法用于将一个JSON字符串转换为JavaScript对象。在JSON中,数据被表示为键值对(key-value pairs)的集合,而JavaScript对象正是以这种方式存储数据。例如,如果你有一个JSON字符串`'{"name": ...

    json字符串转化为list泛型

    在Java编程中,我们经常需要将JSON格式的数据转换为Java对象,这通常涉及到将JSON字符串转化为List泛型。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和...

    字符串转换成json 的三种方式

    在JavaScript编程中,将字符串转换为JSON对象是一个常见的任务,特别是在处理服务器与客户端之间的数据交换时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式,但...

    字符串转换成json的三种方式

    在JavaScript中,我们有内置的方法可以方便地将字符串转换为JSON对象。 **方法一:`JSON.parse()`** `JSON.parse()`是JavaScript内置的函数,用于将一个JSON格式的字符串解析成一个JavaScript值(对象或原始值)。...

    Json对象与json字符串互相转换处理工具

    Json对象与json字符串互相转换处理工具

    验证字符串是否为json格式

    在JavaScript中,可以使用`JSON.parse()`将JSON字符串转化为JavaScript对象,从而可以访问和修改其属性。例如: ```javascript let jsonString = '{"name":"John","age":30,"city":"New York"}'; let jsonObject = ...

    使用json-lib将java对象转换成json字符串

    标题中的“使用json-lib将java对象转换成json字符串”指的是在Java编程中,利用json-lib这个库来将Java对象转化为JSON格式的字符串。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端...

    JSON格式化/字符串格式转换

    2、字符串转BASE64:通过将字符串转换为BASE64编码,可以方便地在网络传输或存储中使用。软件提供了简单易用的界面,只需输入字符串,即可快速完成转换。 3、BASE64转字符串:与字符串转BASE64功能相反,软件可以将...

    由php对象生成json字符串 把php对象变成json字符串.zip

    在这个例子中,我们创建了一个关联数组,然后使用json_encode()将其转换为JSON字符串。结果将是: ```json { "name": "John Doe", "age": 30, "city": "New York" } ``` 如果你需要处理的对象是PHP类的实例,...

    json转化工具,字符串格式化工具,方便又快捷

    - **字符串到JSON转换**:将普通的字符串转化为标准的JSON格式,自动识别并处理非法字符和格式。 - **格式化JSON**:接收未格式化的JSON字符串,将其转换为具有缩进和换行的易读格式。 - **验证JSON**:检查输入...

    json字符串转换c++类对象

    在C++编程中,将JSON字符串转换为C++类对象是一项常见的任务,特别是在处理网络通信、数据存储或配置文件时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析...

    Jquery json2.js 将字符串转化为json对象

    自动将字符串转化为Json对象 使用方法Json parse 在前端使用更方便

    json字符串转换插件

    通过这种方式,你可以使用`JsonUtils.jsonToJavaObject()`方法将JSON字符串转换为任意指定类型的Java对象,而`JsonUtils.javaObjectToJson()`则将Java对象转换为JSON字符串。 总之,JSON字符串转换插件是Java开发中...

    C语言实现的 json格式字符串与结构体自动相互转化

    将JSON字符串转化为结构体,意味着解析JSON文本并将其内容映射到预先定义的C语言结构体中;反之,将结构体转化为JSON字符串则是将结构体中的数据转换为JSON格式的文本,便于在网络间传递或存储。 关于“反射”这一...

    微信小程序-xml字符串转换json格式,适用于微信小程序

    xml字符串转换json格式 可用于微信小程序xml字符串转换json格式 安装 npm方式安装 npm install --save xmlstring2json bower方式安装 bower install xmlstring2json 用法示例: bookstore.xml文件 &lt;title&gt;...

    C# json格式解析,Json格式字符串与C#对象相互转换,类库+使用案例,注释详细

    C# json格式转换,Json格式字符串与C#对象相互转换,类库和测试demo .../// Dictionary类型对象转换为Json格式字符串 /// C#对象转换为Json格式字符串 /// 进行简单的转义处理。只处理 \ 和 " /// 识别Json中的值

    C#字符串和JSON数据类型相互转换

    在C#中,我们主要依靠`System.Text.Json`或`Newtonsoft.Json`库(也称为Json.NET)来实现字符串与JSON对象之间的转换。本篇文章将详细探讨如何使用这两种方法进行转换。 首先,让我们关注`System.Text.Json`,这是...

Global site tag (gtag.js) - Google Analytics