2015-03-16 2 views
3

Я хочу переименовать ключевое значение объекта json с помощью java. мой текущий JSON является:Как переименовать ключ в JSONObject с помощью java?

{ 
     "serviceCentreLon":73.003742, 
     "type":"servicecentre", 
     "serviceCentreLat":19.121737, 
     "clientId":"NMMC01" 
} 

Я хочу изменить его на:

{ 
     "longitude":73.003742, 
     "type":"servicecentre", 
     "latitude":19.121737, 
     "clientId":"NMMC01" 
} 

Я хочу, чтобы переименовать «serviceCentreLon» на «долготу» и «serviceCentreLat» до «широты». Я использую тип данных JSONObject и Java для бэкэнд. ТИА

+0

проверить мое решение –

+0

взгляд на http://stackoverflow.com/questions/14789405/renaming-a-field-in- an-object –

+0

@Astra Bear ..., который связан с javascript, и я работаю на Java. Я уже проверил этот qus. –

ответ

2
String data= json.toString(); 
data=data.replace("serviceCentreLon","longitude"); 
data=data.replace("serviceCentreLat","latitude"); 

конвертировать обратно JSon объекта

+0

Хороший подход. См. Ответ ниже для небольшого улучшения. – northernman

0

есть объект, который сопоставляет для этой структуры данных объекта.

Используйте синтаксический анализатор GSON или парсер Джексона, чтобы преобразовать этот json в POJO.

Затем сопоставить этот объект на другой объект Java с требуемой конфигурацией

Преобразовать что Pojo обратно в JSON, используя те же GSON парсер.


см это для дальнейшего использования

http://www.mkyong.com/java/how-do-convert-java-object-to-from-json-format-gson-api/

1

я не уверен, получаю ли я на ваш вопрос правильно, но не следующие работы?

Вы можете использовать регулярное выражение для замены ключей, например:

String str = myJsonObject.toString(); 
str = str.replace(/"serviceCentreLon":/g, '"longitude":'); 
str = str.replace(/"serviceCentreLat":/g, '"latitude":'); 

Это не так, «чистый», но это может сделать работу быстро.

+0

Какой смысл использовать:/g ?? ? –

6

Предполагая, что вы используете библиотеку json.org: как только у вас есть JSONObject, почему бы просто не сделать это?

obj.put("longitude", obj.get("serviceCentreLon")); 
obj.remove("serviceCentreLon"); 
obj.put("latitude", obj.get("serviceCentreLat")); 
obj.remove("serviceCentreLat"); 

Вы можете создать rename метод, который делает это (то называют его дважды), но это, вероятно, излишним, если они являются только поля вы переименовывать.

0

Чтобы построить на подходе Danyal Sandeelo, вместо того:

data=data.replace("serviceCentreLon","longitude"); 

использования

data=data.replace("\"serviceCentreLon\":","\"longitude\":"); 

Этот метод явно соответствует синтаксису ключа JSon и избежать непонятных ошибок, когда значение ключа присутствует как действительный данные в другом месте строки json.

0

Лучший способ подойти к проблеме - проанализировать данные JSON и затем заменить ключ. Доступен ряд парсеров: google gson, сериализаторы седиментатора Jackson, org.json.me - это несколько таких java-библиотек для обработки данных JSON.

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/ является самым простым, особенно если вы не хотите каких-либо серьезных сериализации или десериализации

Смежные вопросы