Hunter0x7c7
2023-08-11 03b69d0e3c9e8b1c1c5f0e473273f2e975186ea1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package com.github.hunter0x7c7.sync.utils;
 
 
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;
 
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
 
/**
 * ================================================================
 * <p>
 * 版    权: Hunter(c)2018
 * <p>
 * 作    者: Hunter
 * <p>
 * 版    本: V1.0
 * <p>
 * 创建日期: 2018/3/26 16:50
 * <p>
 * 描    述:Json工具类
 * <p>
 * <p>
 * 修订历史:
 * <p>
 * ================================================================
 */
public class JsonUtil {
 
    private static Gson mGson = new Gson();
 
    /**
     * 将json字符串转化成实体对象
     */
    public static <T> T fromJson(String json, Class<T> classOfT) {
        return mGson.fromJson(json, classOfT);
    }
 
    /**
     * 将json字符串转化成实体对象
     * 示例:new TypeToken<ResultEntity<Bean>>() {  }.getType()
     */
    public static <T> T fromJson(String json, Type typeOfT) {
        return mGson.fromJson(json, typeOfT);
    }
 
    /**
     * 将json字符串转化成实体对象
     */
    public static <T> T fromJson(String json, TypeToken<T> typeToken) {
        return fromJson(json, typeToken.getType());
    }
 
    /**
     * 将对象准换为json字符串 或者 把list 转化成json
     */
    public static <T> String toJson(T object) {
        return mGson.toJson(object);
    }
 
    /**
     * 把json 字符串转化成list
     */
    public static <T> List<T> stringToList(String json, Class<T> cls) {
        Gson gson = new Gson();
        List<T> list = new ArrayList<>();
        JsonArray array = new JsonParser().parse(json).getAsJsonArray();
        for (final JsonElement elem : array) {
            list.add(gson.fromJson(elem, cls));
        }
        return list;
    }
 
    /**
     * Json字符串转Map
     */
    public static Map<String, String> jsonToMap(String jsonStr) {
        jsonStr = jsonStr.replaceAll("[ ]*", "").replaceAll("[\r\n]*", "")
                .replace("{\"", "").replace("\"}", "")
                .replace("\",\"", "&").replace(",\"", "&").replace(",", "&")
                .replace("\":\"", "=").replace("\":", "=").replace(":", "=");
        Map<String, String> map = new LinkedHashMap<>();
        String[] sp = jsonStr.split("&");
        for (String ssp : sp) {
            String[] sspp = ssp.split("=");
            if (sspp.length >= 2) {
                if (sspp[1] != null && sspp[1].length() > 0) {
                    map.put(sspp[0], sspp[1]);
                }
            }
        }
        return map;
    }
 
    public static String mapToJson2(Map<String, String> map) {
 
        Set<Map.Entry<String, String>> entrySet = map.entrySet();
        StringBuilder sb = new StringBuilder();
        sb.append("{");
        for (Map.Entry<String, String> entry : entrySet) {
            if (sb.length() > 1) {
                sb.append(",");
            }
            sb.append("\"")
                    .append(entry.getKey())
                    .append("\":\"")
                    .append(entry.getValue())
                    .append("\"");
        }
        sb.append("}");
        return sb.toString();
    }
 
    public static String mapToJson(Map<String, ?> map) {
 
        Set<? extends Map.Entry<String, ?>> entrySet = map.entrySet();
        StringBuilder sb = new StringBuilder();
        sb.append("{");
        Object value;
        for (Map.Entry<String, ?> entry : entrySet) {
            if (sb.length() > 1) {
                sb.append(",");
            }
            sb.append("\"").append(entry.getKey()).append("\":");
 
            value = entry.getValue();
            if (value instanceof Short || value instanceof Integer || value instanceof Long
                    || value instanceof CharSequence || value instanceof Float
                    || value instanceof Double || value instanceof Boolean) {
                sb.append("\"").append(value).append("\"");
            } else {
                sb.append(JsonUtil.toJson(value));
            }
        }
        sb.append("}");
        return sb.toString();
    }
 
}