Как преобразовать строковое значение в json?

#java #json

#java #json

Вопрос:

У меня есть строка значений, разделенных запятой и «=». Мне нужно преобразовать это в правильный формат json:

 value = value.replace("=", ":");
String [] arrayStr=value.split(",");

JsonObjectBuilder builder = Json.createObjectBuilder();
String key = null;
for (String s: arrayStr){
    if(key == null) {
        key = s;
    } else {
        builder.add(key, s);
        key = null;
    }
}
JsonObject val = builder.build();
  

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

 [{Locale=en, Address={House=138, Street=Whitefield Road, CityDistrict=Bangalore, City=Bangalore, District=Bangalore, RegionCode=KA, Region=Whitefield, CountryCode=IND, Country=India, PostalCode=560066}}, {Locale=de, Address={House=138, Street=Whitefield Road, CityDistrict=Bangalore, City=Bangalore, District=Bangalore, RegionCode=KA, Region=Whitefield, CountryCode=IND, Country=India, PostalCode=560066}}]

[{"Locale":"en","Address":{"House":"138","Street":"Whitefield Road","CityDistrict":"Bangalore","City":"Bangalore","District":"Bangalore","RegionCode":"KA","Region":"Whitefield","CountryCode":"IND","Country":"India","PostalCode":"560066"}},{"Locale":"de","Address":{"House":"138","Street":"Whitefield Road","CityDistrict":"Bangalore","City":"Bangalore","District":"Bangalore","RegionCode":"KA","Region":"Whitefield","CountryCode":"IND","Country":"India","PostalCode":"560066"}}]
  

Комментарии:

1. может быть, JsonParser parser = new JsonParser(); JSONObject json = (JSONObject) parser.parse(stringToParse); ?

2. Исключение в потоке «main» org.jooq.tools.json. Исключение ParseException: неожиданный символ (L) в позиции 2. в org.jooq.tools.json. Yylex.yylex(Yylex.java: 609) в org.jooq.tools.json.JsonParser.nextToken(JsonParser.java:263) в org.jooq.tools.json.JsonParser.parse(JsonParser.java:112) в org.jooq.tools.json.JsonParser.parse(JsonParser.java:75) в org. jooq.tools.json.JsonParser.parse(JsonParser.java:69)

3. Вы показываете не весь код. Проблема в коде, который вы решили не показывать.

4. Единственное, чего не хватает в приведенном выше коде, это строковое значение = «[{Locale=en, Address={House=138, Street=Whitefield Road, CityDistrict=Бангалор, City=Бангалор, District=Бангалор, regionCode=KA, Region=Whitefield, CountryCode=IND, Country= Индия, PostalCode = 560066}}, {Locale=de, Address={House=138, Street=Whitefield Road, CityDistrict=Бангалор, City=Бангалор, Округ =Бангалор, Код региона = KA, Регион = Whitefield, Код страны = IND, Страна = Индия, Почтовый индекс = 560066}}] «;

5. Просто отладьте и посмотрите, что вы добавляете в конструктор в качестве ключей. Первый ключ — «[{Locale:en». Я не уверен, является ли это допустимым ключом. Сообщение об ошибке указывает, что это не так.

Ответ №1:

 String value = arrayObject.get(VALUE).toString(); 
JSONArray array = new JSONArray(value); 
  

Комментарии:

1. Привет, не могли бы вы, пожалуйста, объяснить, что такое arrayObject ?