Java 怎么传递一个Map返回一个JSON字符串

2019年7月29日20:14:35Java 怎么传递一个Map返回一个JSON字符串已关闭评论 403 1724字阅读5分44秒

1.简介

Java 怎么传递一个Map返回一个JSON字符串?——请看下文。

2.示例代码

/**
 * 版权所有 编程十万个怎么办(www.tah1986.com)
 */

import java.util.Arrays;
import java.util.Collection;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Main{
    private static Logger logger = Logger.getLogger(JSONUtility.class
            .getName());
    
    public static String jsonFromMap(Map<String, Object> jsonData) {
        try {
            JsonDocument json = new JsonDocument();
            json.startGroup();

            for (String key : jsonData.keySet()) {
                Object data = jsonData.get(key);
                if (data instanceof Map) {
                    
                    json.addValue(key,
                            jsonFromMap((Map<String, Object>) data));
                } else if (data instanceof Object[]) {
                    
                    json.addValue(key, "["
                            + stringArrayFromObjectArray((Object[]) data)
                            + "]");
                } else if (data instanceof Collection) {
                    
                    json.addValue(
                            key,
                            "["
                                    + stringArrayFromObjectArray(((Collection) data)
                                            .toArray()) + "]");
                } else if (data instanceof int[]) {
                    
                    String intArray = Arrays.toString((int[]) data);
                    
                    intArray = intArray.replaceAll(" ", "");
                    json.addValue(key, intArray);
                } else if (data instanceof JSONCapableObject) {
                    json.addValue(key,
                            jsonFromMap(((JSONCapableObject) data)
                                    .jsonMap()));
                } else {
                    
                    json.addValue(key, String.valueOf(data));
                }
            }

            json.endGroup();

            logger.log(Level.FINER,
                    "created json from map => " + json.toString());
            return json.toString();
        } catch (Exception e) {
            logger.log(Level.SEVERE, "Could not create JSON from Map. ", e);
            return "{}";
        }

    }
    private static String stringArrayFromObjectArray(Object[] data) {
        StringBuilder arrayAsString = new StringBuilder();
        for (Object o : data) {
            if (arrayAsString.length() > 0) {
                arrayAsString.append(",");
            }
            if (o instanceof Map) {
                arrayAsString.append(jsonFromMap((Map<String, Object>) o));
            } else if (o instanceof JSONCapableObject) {
                arrayAsString.append(jsonFromMap(((JSONCapableObject) o)
                        .jsonMap()));
            } else {
                arrayAsString.append("\"").append(String.valueOf(o))
                        .append("\"");
            }
        }
        return arrayAsString.toString();
    }
}

 
继续阅读
编程十万个怎么办