json字符串还原map

简介: 今天有个需求,由于调用第三方接口一直调不通,但是又需要先把接口写好供前端调用,于是想到以前写的一个json字符串还原的类。这里做个笔记。package com.

今天有个需求,由于调用第三方接口一直调不通,但是又需要先把接口写好供前端调用,于是想到以前写的一个json字符串还原的类。这里做个笔记。

package com.hz.token;

import com.google.gson.Gson;

import java.util.List;
import java.util.Map;

/**
 * 2017/6/26.
 */
public class JsonToStringUtil {
    private static StringBuffer sb = new StringBuffer("Map jsonMap = new HashMap();\n");

    private JsonToStringUtil() {

    }


    public static void main(String[] args) {
        String s = parseJsonStr(CONTENT);
        System.out.println(s);
    }


    public static String parseJsonStr(String jsonStr) {
        Gson gson = new Gson();
        Map<String, Object> map = gson.fromJson(jsonStr, Map.class);
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            Object value = entry.getValue();
            if (value instanceof String) {
                appendStringMap("jsonMap", entry.getKey(), (String) value);
            }
            if (value instanceof Number) {
                appendObjectMap("jsonMap", entry.getKey(), value);
            }
            if (value instanceof Map) {
                appendMapMap(entry.getKey(), (Map) value);
                appendObjectMap("jsonMap", entry.getKey(), entry.getKey());
            }
            if (value instanceof List) {
                appendListMap(entry.getKey(), (List) value);
                appendObjectMap("jsonMap", entry.getKey(), entry.getKey());
            }

        }
        return sb.toString();
    }

    private static void appendStringMap(String mapKey, String key, String value) {
        sb.append(mapKey).append(".put(\"").append(key).append("\",\"").append(value).append("\");\n");
    }

    private static void appendObjectMap(String mapKey, String key, Object value) {
        sb.append(mapKey).append(".put(\"").append(key).append("\",").append(value).append(");\n");
    }

    private static void appendMapMap(String subMapKey, Map<String, Object> subMapValue) {
        sb.append("Map ").append(subMapKey).append("= new HashMap();\n");
        for (Map.Entry<String, Object> entry : subMapValue.entrySet()) {
            Object value = entry.getValue();
            if (value instanceof String) {
                appendStringMap(subMapKey, entry.getKey(), (String) value);
            }
            if (value instanceof Number) {
                appendObjectMap(subMapKey, entry.getKey(), value);
            }
            if (value instanceof Map) {
                appendMapMap(entry.getKey(), (Map) value);
                appendObjectMap(subMapKey, entry.getKey(), entry.getKey());
            }
            if (value instanceof List) {
                appendListMap(entry.getKey(), (List) value);
                appendObjectMap(subMapKey, entry.getKey(), entry.getKey());
            }
        }
    }

    private static void appendStringList(String listKey, Object value) {
        sb.append(listKey).append(".add(\"").append(value).append("\");\n");
    }

    private static void appendObjectList(String listKey, Object value) {
        sb.append(listKey).append(".add(").append(value).append(");\n");
    }

    private static void appendListMap(String subListKey, List subListValue) {
        sb.append("List ").append(subListKey).append("= new ArrayList();\n");
        int i = 1;
        for (Object value : subListValue) {
            if (value instanceof String) {
                appendStringList(subListKey, value);
            }
            if (value instanceof Number) {
                appendObjectList(subListKey, value);
            }
            if (value instanceof Map) {
                String mapName = subListKey + "SubMap" + i;
                appendMapMap(mapName, (Map) value);
                appendObjectList(subListKey, mapName);
            }
            if (value instanceof List) {
                String listName = subListKey + "SubList" + i;
                appendListMap(listName, (List) value);
                appendObjectList(subListKey, listName);
            }
            i++;
        }
    }

    private static String CONTENT = "{\"authCode\":\"drivingLicense\",\"childCommitType\":\"drivingLicenseInfos\",\"custNo\":\"955628\",\"loanCode\":\"carat\",\"mainAuthlog\":\"2016-07-01\",\"mainCardno\":\"沪A12345\",\"mainMotorno\":\"HJ145632\",\"mainRegistdate\":\"2016-07-01\",\"ssAccountId\":\"\"}\n";
}
image.png

关注我的公众号,都是满满的干货!

孙坚.gif
目录
相关文章
|
6月前
|
JSON JavaScript 前端开发
JavaScript实现字符串转json对象的方法
JavaScript实现字符串转json对象的方法
|
5月前
|
XML JSON 前端开发
json字符串CSS格式化
完成以上步骤后,你便能在网页中看到格式化后的JSON数据,它们将按照CSS定义的样式进行展示,使数据更易于阅读和理解。通过有效地结合JSON和CSS,你可以创建出更加丰富且易于交互的网页内容。
239 64
|
4月前
|
JSON 前端开发 JavaScript
json字符串如何转为list对象?
json字符串如何转为list对象?
592 7
|
5月前
|
XML JSON 前端开发
json字符串CSS格式化
json字符串CSS格式化
95 5
|
5月前
|
JSON 数据格式 Python
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
|
6月前
|
JSON Java 数据格式
Java系列之:生成JSON字符串
这篇文章介绍了两种在Java中生成JSON字符串的方法:使用`JSONObject`类及其`toJSONString`方法来动态生成,以及手动拼接字符串的方式来创建JSON格式的字符串。
Java系列之:生成JSON字符串
|
6月前
|
JSON Go 数据格式
Go实现json字符串与各类struct相互转换
文章通过Go语言示例代码详细演示了如何实现JSON字符串与各类struct之间的相互转换,包括结构体对象生成JSON字符串和JSON字符串映射到struct对象的过程。
57 0
|
7月前
|
存储 JSON Java
Java对象转换为JSON字符串
在Java开发中,常需将数据对象转换为JSON存储,如使用Fastjson库。要将Java对象转为JSON,可调用`JSON.toJSONString(obj)`;反向转换则用`JSON.parseObject(str, Class)`。
|
7月前
|
JSON 数据格式
Unsupported Media Type,传入的字符串数据:这里应该是Json
Unsupported Media Type,传入的字符串数据:这里应该是Json
|
7月前
|
JSON 数据格式
Navicate数据报错之Bad Request,发送端口测试的时候,使用JSON字符串,而不是Text
Navicate数据报错之Bad Request,发送端口测试的时候,使用JSON字符串,而不是Text