Поместите json в строковую переменную

Я хочу поместить все свое содержимое Json в переменную String в формате ниже.

String inputJSON = "{
\"billingAddress\":{\"city\":\"\",\"country\":\"\",\"postalCode\":\"\",\"state\":\"\",\"streetAddress\":\"\"},
\"shippingAddress\":{\"city\":\"\",\"country\":\"\",\"postalCode\":\"\",\"state\":\"\",\"streetAddress\":\"\"},
\"personAddress\":{\"city\":\"\",\"country\":\"\",\"postalCode\":\"\",\"state\":\"\",\"streetAddress\":\"\"},
\"customerStatus\":\"\",
\"createdDate\":\""+((String)globalMap.get("Json.Date"))+"\"";

Могу ли я узнать, почему я получаю сообщение об ошибке при заполнении двойных кавычек? Я думаю, что вся строка завершена или заключена в двойные кавычки. Я хочу разместить свой json только в этом формате. Могу я узнать, чего не хватает или что я делаю неправильно?

@FedericoklezCulloca, Подскажите пожалуйста, как должно быть на одном примере?

Squeez 04.04.2018 16:26

Извините, неправильный язык. Смотрите другие ответы.

Federico klez Culloca 04.04.2018 16:30
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
55
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вам нужно добавить "+" в конце каждой строки, чтобы соединить их правильным образом:

Эти 3 одинаковые:

String s = "abcdef";
String s = "abc"+"def";
String s = "abc"+
           "def";

Итак, для вас пример:

String s =
    "{ "+
    "\"billingAddress\":{\"city\":\"\",\"country\":\"\",\"postalCode\":\"\",\"state\":\"\",\"streetAddress\":\"\"},"+
    "\"shippingAddress\":{\"city\":\"\",\"country\":\"\",\"postalCode\":\"\",\"state\":\"\",\"streetAddress\":\"\"},"+
    "\"personAddress\":{\"city\":\"\",\"country\":\"\",\"postalCode\":\"\",\"state\":\"\",\"streetAddress\":\"\"},"+
    "\"customerStatus\":\"\","+
    "\"createdDate\":\""+((String)globalMap.get("Json.Date"))+"\"}";

Также вам не хватало } в конце, чтобы иметь действительную строку JSON

Если вы распечатаете строку выше, вы получите (после форматирования)

{
  "billingAddress": {
    "city": "",
    "country": "",
    "postalCode": "",
    "state": "",
    "streetAddress": ""
  },
  "shippingAddress": {
    "city": "",
    "country": "",
    "postalCode": "",
    "state": "",
    "streetAddress": ""
  },
  "personAddress": {
    "city": "",
    "country": "",
    "postalCode": "",
    "state": "",
    "streetAddress": ""
  },
  "customerStatus": "",
  "createdDate": "pop"
}
Ответ принят как подходящий

К сожалению, Java не поддерживает многострочное объявление String. Вам нужно использовать + для объединения строк

String inputJSON = "{"
    + "\"billingAddress\":{\"city\":\"\",\"country\":\"\",\"postalCode\":\"\",\"state\":\"\",\"streetAddress\":\"\"}," 
    + "\"shippingAddress\":{\"city\":\"\",\"country\":\"\",\"postalCode\":\"\",\"state\":\"\",\"streetAddress\":\"\"}," 
    + "\"personAddress\":{\"city\":\"\",\"country\":\"\",\"postalCode\":\"\",\"state\":\"\",\"streetAddress\":\"\"}," 
    + "\"customerStatus\":\"\",\"createdDate\":\""+((String)globalMap.get("Json.Date"))+"\"";

Java не поддерживает многострочные строковые литералы (пока). Таким образом, каждая строка должна быть полной строкой, заключенной в двойные кавычки, и каждая строка должна быть объединена с помощью знака «+».

    final String inputJSON = "{" +
    "\"billingAddress\":{\"city\":\"\",\"country\":\"\",\"postalCode\":\"\",\"state\":\"\",\"streetAddress\":\"\"}," +
    "\"shippingAddress\":{\"city\":\"\",\"country\":\"\",\"postalCode\":\"\",\"state\":\"\",\"streetAddress\":\"\"}," +
    "\"personAddress\":{\"city\":\"\",\"country\":\"\",\"postalCode\":\"\",\"state\":\"\",\"streetAddress\":\"\"}," +
    "\"customerStatus\":\"\"," +
    "\"createdDate\":\""+((String)globalMap.get("Json.Date"))+"\"";

Может быть, более читаемым:

final String inputJSON =
    "{" +
    "    \"billingAddress\": {" +
    "        \"city\":\"\"," +
    "        \"country\":\"\"," +
    "        \"postalCode\":\"\"," +
    "        \"state\":\"\"," +
    "        \"streetAddress\":\"\"" +
    "    }," +
    "    \"shippingAddress\": {" +
    "        \"city\":\"\"," +
    "        \"country\":\"\"," +
    "        \"postalCode\":\"\"," +
    "        \"state\":\"\"," +
    "        \"streetAddress\":\"\"" +
    "    }," +
    "    \"personAddress\": {" +
    "        \"city\":\"\"," +
    "        \"country\":\"\"," +
    "        \"postalCode\":\"\"," +
    "        \"state\":\"\"," +
    "        \"streetAddress\":\"\"" +
    "    }," +
    "    \"customerStatus\":\"\"," +
    "    \"createdDate\": \"" + ((String)globalMap.get("Json.Date")) + "\"" +
    "}";

В этом формате было легко увидеть, что закрывающий символ '}' также отсутствовал.

Удачи.

Другие вопросы по теме