我想用java重命名json对象的键值。 我现在的json是:
{
"serviceCentreLon":73.003742,
"type":"servicecentre",
"serviceCentreLat":19.121737,
"clientId":"NMMC01"
}
我想将其更改为:
{
"longitude":73.003742,
"type":"servicecentre",
"latitude":19.121737,
"clientId":"NMMC01"
}
我想将“serviceCentreLon”重命名为“longitude”,将“serviceCentreLat”重命名为“latitude”。我正在使用JSONObject数据类型和Java作为后端。 TIA
答案 0 :(得分:10)
假设您正在使用json.org库:一旦有了JSONObject,为什么不这样做呢?
obj.put("longitude", obj.get("serviceCentreLon"));
obj.remove("serviceCentreLon");
obj.put("latitude", obj.get("serviceCentreLat"));
obj.remove("serviceCentreLat");
您可以创建一个rename
方法来执行此操作(然后调用两次),但如果这些是您要重命名的 字段,则可能有点过分。
答案 1 :(得分:2)
String data= json.toString();
data=data.replace("serviceCentreLon","longitude");
data=data.replace("serviceCentreLat","latitude");
转换回json对象
答案 2 :(得分:2)
我不确定我的问题是否正确,但不应该做以下工作?
您可以使用正则表达式替换键,例如:
String str = myJsonObject.toString();
str = str.replace(/"serviceCentreLon":/g, '"longitude":');
str = str.replace(/"serviceCentreLat":/g, '"latitude":');
它不是"清洁",但它可能会快速完成工作。
答案 3 :(得分:1)
以Danyal Sandeelo的方法为基础,而不是:
data=data.replace("serviceCentreLon","longitude");
使用
data=data.replace("\"serviceCentreLon\":","\"longitude\":");
此方法显式匹配json键语法,并避免模糊错误,其中键值作为json字符串中其他位置的有效数据出现。
答案 4 :(得分:1)
解决问题的最佳方法是解析JSON数据,然后替换密钥。有许多解析器可用 - 谷歌gson,杰克逊序列化器反序列化器,org.json.me是一些处理JSON数据的Java库。
http://www.mkyong.com/java/how-do-convert-java-object-to-from-json-format-gson-api/
如果你有一个非常通用且相对庞大的JSON数据,是一个很好的方法来处理它。当然,你必须花时间学习图书馆以及如何使用它。
http://www.baeldung.com/jackson-map是另一个这样的解析器。
https://stleary.github.io/JSON-java/是最简单的,特别是如果您不想要任何严重的序列化或反序列化
答案 5 :(得分:0)
有一个映射到此对象数据结构的对象。
使用GSON解析器或Jackson解析器将此json转换为POJO。
然后将此对象映射到具有所需配置的另一个Java对象
使用相同的GSON解析器将该POJO转换回json。
请参阅此内容以供进一步参考
http://www.mkyong.com/java/how-do-convert-java-object-to-from-json-format-gson-api/