java中的字符串如下{"a":"hello","b":"r","s","j":10}
我希望输出为:{a:"hello",b:"r","s",j:10}
从json字符串的key中删除引号
使用java语言解决方案
发布于 2020-10-05 11:19:24
我不确定您为什么要这样做,但是如果您使用Jackson作为JSON库,这里有一个简单的方法。
代码段
String jsonStr = "{\"a\":\"hello\",\"b\":[\"r\",\"s\"],\"j\":10}";
ObjectMapper mapper = new ObjectMapper();
mapper.configure(JsonGenerator.Feature.QUOTE_FIELD_NAMES, false);
System.out.println(mapper.writeValueAsString(mapper.readValue(jsonStr, Map.class)));注意:自从
2.10之后,JsonGenerator.Feature.QUOTE_FIELD_NAMES就被弃用了。
控制台输出
{a:"hello",b:["r","s"],j:10}发布于 2020-10-04 21:33:47
我真的不明白你为什么要这么做,因为发布这样的操作后,你的JSON将不符合JSON的资格。假设它是一个字符串,我找到了一种棘手的方法。递归地迭代JSON,并在键之前和之后附加一个标记。使用replaceAll删除包含“的所有token实例。
例如,如果您的JSON是这样的:
{
"key1": {
"key2": ["aaaa", "bbbb"]
}
}您可以将其转换为以下形式:
{
"$$$$_key1_$$$$": {
"$$$$_key2_$$$$": ["aaaa", "bbbb"]
}
}然后,在字符串化后,可以用空字符替换\"$$$$_和_$$$$\"的所有实例。
代码:
public static void main(String[] args) throws IOException {
String json = new String(Files.readAllBytes(Paths.get("sample_json.json")));
JSONObject jsonObject = new JSONObject(json);
String str = change(jsonObject).toString();
System.out.println(str.replaceAll("\"\\$\\$\\$\\$_", "")
.replaceAll("_\\$\\$\\$\\$\"", "")
);
}
public static JSONObject change(JSONObject jsonObject){
JSONObject result = new JSONObject();
Map<String, Object> map = jsonObject.toMap();
for(Map.Entry<String, Object> entry : map.entrySet()){
Object object = entry.getValue();
if (object instanceof JSONObject){
result.put(appendToken(entry.getKey()), change((JSONObject) object));
} else if (object instanceof JSONArray){
JSONArray objArray = (JSONArray) object;
JSONArray resultArray = new JSONArray();
for (Object arrObj : objArray){
if (arrObj instanceof JSONObject){
resultArray.put(change((JSONObject) arrObj));
} else {
resultArray.put(arrObj);
}
}
result.put(appendToken(entry.getKey()), resultArray);
} else {
result.put(appendToken(entry.getKey()), object);
}
}
return result;
}
private static String appendToken(String key){
return "$$$$_" + key + "_$$$$";
}https://stackoverflow.com/questions/64194784
复制相似问题