2013-08-12 4 views
0

Есть ли более простой способ конвертировать литерал json string в объект json вместо ручной кодировки «\».Простой способ преобразования строки в объект JSON?

Образцы данных, но мои намного больше этого.

{"phonetype":"N95","cat":"WP"} 

//Easier way? Equivalent of JSON.Stringify({"phonetype":"N95","cat":"WP"})? 
JSONObject jsonObj = new JSONObject("{\"phonetype\":\"N95\",\"cat\":\"WP\"}"); 
+0

Я не думаю, что есть выход из этого. Java не поддерживает выбор одиночных или двойных кавычек, чтобы заключать строки как некоторые другие языки, такие как JavaScript. Если JSON слишком велик, чтобы избежать кавычек, загрузите его из файла. –

+1

@BrianRoach Я думаю, что это похожие, но, несомненно, разные вопросы, решение этого вопроса может или не может включать в себя методы ускорения перехода. – gbtimmon

+0

@gbtimmon Они на самом деле нет. Ему нужны двойные кавычки в строковом литерале, и нет возможности избежать их на Java. То, что вы отправили в качестве ответа, недействительно JSON. –

ответ

1

Какую цель ставите перед собой? Почему строка должна быть в файле Java напрямую? Почему, в этом отношении, проблема с цитатами? Для меня кажется, что у вас есть ненужное ограничение (например, «эта строка должна быть встроенной» или «это должна быть строка вообще»), которую, если вы удалите, будет работать вокруг.

  1. Магазин комплекс JSON вне Java

    Для меня это почти наверняка ваш лучший выбор. Вы описываете свои данные как «намного больше, чем [{"phonetype":"N95","cat":"WP"}]», что означает, что это данные, а не код, и у вас будет намного лучшее время, чтобы их разделить. Загрузите файл, когда вам это нужно, используя любой инструмент, который вы хотите, и вы золотой.

  2. Храните настройки как нечто иное, чем JSON

    JSON отлично подходит для многих вещей, но если вам нужно встроенный JSON и не можете использовать внешний файл, который подсказывает мне, что есть какая-то очень плотная связь между вашей Java и вашим JSON, что не имеет смысла. Вам лучше сохранить константы безопасности типа или иначе сохранить эти данные в «реальной» Java, а не в строке, которую вы анализируете.

  3. Не беспокойтесь о отводящей

    Я не думаю, что это относится к вашему делу, но если у вас есть небольшое количество JSON, что вы действительно хотите быть инлайн и JSON, то просто бросьте его и убегайте несколько цитат, и все готово. Если этот параметр кажется проблематичным из-за того, что: a) регулярно меняются данные; b) данные, большие и сложные для работы в строке, это довольно четкий знак, который вы действительно хотите использовать вариант 1. выше.

+0

Спасибо за ответ. Вариант использования был быстрым и грязным тестом (встроенным в мой контроллер/springmvc), чтобы имитировать полезную нагрузку json для синтаксического анализа. Просто так. Я новичок в java и вместо времени, я хочу загрузить e json из файла или войти и избежать каждого релевантного токена. Я надеялся на что-то вроде json.stringify(). Все точки действительны, и в этом случае # 1, по-видимому, лучше всего подходит для использования. Спасибо! – JaJ

+0

Java в целом предпочитает быть более ограничительным/подробным, когда он поощряет лучшие практики. Хотя я думаю, что многие согласятся, многолинейные или неэкранированные строковые литералы были бы хороши, они были намеренно исключены из Java 7: http://bugs.sun.com/view_bug.do?bug_id=4165111 Немного неудобно, я дам вам, но, беря лишние моменты, чтобы разделить ваши данные с вашим кодом, часто получаются чистые положительные результаты. – dimo414

0

Существует несколько парсеров json для маршалирования json для объекта и наоборот. Лишь немногие из этих анализаторами являются

+1

OP спрашивает, как представлять JSON без экранирования '' ' – sanbhat

+0

@sanbhat, если вы создадите json для объекта, вам не нужно беспокоиться об экранировании". –

+0

Я просто пытаюсь имитировать строку в качестве полезной информации json от вызова отдыха и прочее в json-объект для разбора .... конечно, я просто хочу начать с строки, представляющей полезную нагрузку. – JaJ

-1

Mabye это поможет?

JSONObject jsonObj = new JSONObject("{'phonetype':'N95','cat':'WP'}"); 
+0

За исключением части, где это недействительно JSON. См. http://stackoverflow.com/questions/2275359/jquery-single-quote-in-json-response –

+0

(Чтобы уточнить: поскольку материал org.json принимает недействительный JSON, это будет работать ... но это может быть не в парсере, который соответствует фактической спецификации) –

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