Пробел в значении JSON

java android json jsonobject

6605 просмотра

5 ответа

196 Репутация автора

Я получаю строку в JSONформате, и я пытаюсь получить значения. Мой метод работает нормально, но если в значении есть пробел, мой метод ломается и идет дождь исключений. Ниже мой код:

private String getValue(String jsonval)
{
    try
    {
        JSONObject jsonObject = new JSONObject(jsonval);
        return jsonObject.optString("id");
    }
    catch(JSONException e)
    {
        e.printStackTrace();
    }
    return null;
}

Хотя эта строка работает нормально: {titleDE=Deutschland, id=10, titleEN=Germany} это создает проблемы: {titleDE=Costa Rica, id=10, titleEN=Costa Rica} исключения говорят о том, что пустое пространство является неопределенным объектом.

Автор: Archimedes Источник Размещён: 18.07.2016 11:54

Ответы (5)


1 плюс

12062 Репутация автора

Попробуйте следующее JSON:

{"titleDE"="Costa Rica", "id"=10, "titleEN"="Costa Rica"}

Ваша проблема в том, что a String- это либо цепочка символов без пробелов (плохая практика), либо цепочка символов, помещенная между "и ". Если вы хотите использовать "в своем Stringиспользовании escape-символ, который чаще всего \.

Примеры: "Deutchland", "Costa Rica", "He said \"whatever\" ".

Целочисленное значение может быть без кавычек, но это хорошая практика заключать их в кавычки, а затем приводить эти строки к правильным числовым типам. Когда вы преобразуете 10из JSON, некоторые автоматические парсеры будут приводить его к, intа некоторые - к long. По этой причине лучше разыграть его самостоятельно.

Автор: xenteros Размещён: 18.07.2016 11:58

2 плюса

3132 Репутация автора

Решение

Отправьте ключ и значения в строке JSON, заключенной в двойные кавычки. Как это - "key"="string".

{"titleDE"="Deutschland", "id"=10, "titleEN"="Germany"}
{"titleDE"="Costa Rica", "id"=10, "titleEN"="Costa Rica"}

Также обратите внимание, что между клавишей и = OR = и значением нет пробела . Целочисленные / логические значения могут быть без кавычек.

Автор: Jimit Patel Размещён: 18.07.2016 11:59

1 плюс

665 Репутация автора

Работает:

Использование:

{"titleDE": "CostaRica", "id": 10, "titleEN": "Коста-Рика"}

Пространство может быть там. Нет проблем. Просто используйте: вместо =

Автор: Anish Mittal Размещён: 18.07.2016 12:21

1 плюс

413 Репутация автора

Попробуйте ниже JSON:

{titleDE: «Коста-Рика», id: 10, titleEN: «Коста-Рика»}

Вы можете поместить любой json в http://jsonviewer.stack.hu/ и проверить его.

Автор: Satya Размещён: 18.07.2016 12:54

0 плюса

1 Репутация автора

\ u200B может быть добавлено между строкой " допустим, \ u200B, это строка, добавленная здесь" ---> этот юникод (\ u200B a) будет проигнорирован, а между say и this добавлено пустое пространство

Автор: Sai Nagendra Siddamshetty Размещён: 30.09.2019 06:39
Вопросы из категории :
32x32