如何使用java重命名JSONObject中的键?

时间:2015-03-16 06:35:54

标签: java json

我想用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

6 个答案:

答案 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/