这是我的JSON的一部分:
{
"expressions": {
"storyId": "doesNotMatter"
},
"facts": { }
}
我希望从JSON中删除键“ storyId”。如何通过将JSON转换为字符串并使用Regex来做到这一点?
在删除不需要的文本之后,我的JSON应该像这样:
{
"expressions": {
},
"facts": { }
}
注意:我看不到我的原始JSON,并且不知道谁是谁或什么包装器元素。
答案 0 :(得分:1)
我不建议您使用正则表达式,最好的选择是使用一个库来解析json,删除值,然后再次将其转换为字符串。
JSONObject jsonObject = new JSONObject(input);
jsonObject.getJSONObject("expressions").remove("storyId");
String output = jsonObject.toString();
如果您确实要使用正则表达式,则可以使用以下命令
jsonString.replaceAll("(\\\"storyId\\\"|\\'storyId\\')\\s*:\\s*(\\\"[^\\\"]*\\\"|'[^\\\"]*')\\s*,?", "");
但只需确保storyId确实是一个字符串,否则此正则表达式将无法工作。
编辑:更新了我的答案,如果您想要一个使用正则表达式删除参数的函数,
void replaceAllKeys(String keyName, String jsonAsString) {
String pattern = String.format("(\\\"%s\\\"|\\'%s\\')\\s*:\\s*(\\\"[^\\\"]*\\\"|'[^\\\"]*')\\s*,?", keyName, keyName);
return jsonAsString.replaceAll(pattern, "");
}
答案 1 :(得分:0)
首先,我假设您将在jsonObj
中获得所有json对象,然后通过传递json键来调用remove()
,如下所示:
jsonObj.getAsJsonObject("expressions").remove("storyId");