仅支持 map<string,object> 格式,map里面可以放map,list,list
import java.util.List;
import java.util.Map;
/**
* @Author yv
* @Description map 转 json格式string字符串
* @Date 2021/9/29 8:58
*/
public class MapToJson {
public static String mapTojsonString(Map<String, Object> map) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("{");
if (map != null && map.size() > 0) {
for (String key : map.keySet()) {
if (!stringBuilder.toString().endsWith("{")) stringBuilder.append(",");
String value = mapTojsonString(map.get(key));
stringBuilder.append("\"").append(key).append("\"")
.append(":")
.append(value);
}
}
stringBuilder.append("}");
return stringBuilder.toString();
}
static String mapTojsonString(Object obj) {
if (obj instanceof String) return "\"" + obj.toString() + "\"";
if (obj instanceof Map) return mapTojsonString((Map) obj);
if (obj instanceof List) return listToString((List<Object>) obj);
if (obj == null) return null;
return obj.toString();
}
static String listToString(List<Object> list) {
StringBuilder builder = new StringBuilder();
builder.append("[");
if (list != null && list.size() > 0) {
for (Object obj : list) {
if (!builder.toString().endsWith("[")) builder.append(",");
builder.append(mapTojsonString(obj));
}
}
builder.append("]");
return builder.toString();
}
}
代码演示
public static void main(String[] args) {
//主表数据
Map<String, Object> map = new HashMap<>();
map.put("number", "ss");
map.put("title", "ss");
map.put("remark", "ss");
//明细表数据
List<Map<String, String>> list = new ArrayList<>();
Map<String, String> map1 = new HashMap<>();
map1.put("content", "添加");
map1.put("detail", "添加");
list.add(map1);
map1 = new HashMap<>();
map1.put("content", null);
map1.put("detail", "添加");
list.add(map1);
map.put("list", list);
System.out.println(mapTojsonString(map));
}
运行结果
{"number":"ss","remark":"ss","title":"ss","list":[{"detail":"添加","content":"添加"},{"detail":"添加","content":null}]}