что не так с моей структурой JSON? - PullRequest
0 голосов
/ 06 июня 2011
{"Street":
    [
        {
            "Street_name":"Dewlane Dr",
            "Street_numbers":
                [
                    {
                        "number":26,
                        "Unit_number":""
                    }
                ]
         }
    ]
}

но я получаю эту ошибку при синтаксическом анализе iPhone на SBJSON.

Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"Object value expected for key: Street\" UserInfo=0x595fd60 {NSUnderlyingError=0x593cfc0 

1 Ответ

1 голос
/ 06 июня 2011

После "Unit_number" есть дополнительная закрывающая кавычка. Ах, это была просто ошибка копирования и вставки.

В этом нет ничего плохого, насколько я могу судить и согласно jsonlint.com .

Просто чтобы разобраться: у вашей структуры есть один самый внешний объект, у которого есть свойство Street. Значение свойства Street является массивом с одной записью. Эта одна запись является объектом со свойствами Street_name, который имеет строковое значение, и Street_numbers, который имеет значение массива. Одна запись в массиве Street_numbers - это объект с двумя свойствами, number и Unit_number.


Обновление : Я никогда не обращался к ошибке SBJSON.

Если вы получаете эту ошибку от SBJSON, она предлагает одно из следующих действий:

  1. То, что вы вводите в SBJSON, не то, что вы цитировали (это довольно простая ошибка). Например, возможно, то, что вы кормите, каким-то образом обрезается сразу после "Street":.
  2. У вас есть символ после "Street": , который выглядит как пробел к тому времени, когда вы вставили его в StackOverflow, но не является пробелом по обычным определениям, и поэтому SBJSON думает, что это персонаж, который должен быть обработан и задыхается от него.
  3. В SBJSON есть ошибка, связанная со значением в строке после двоеточия (что маловероятно).
  4. В SBJSON есть ошибка, связанная с точным типом пробелов, которые есть у вас в этом месте. В Юникоде есть много разных пробельных символов, если вы (возможно, случайно) использовали необычный, SBJSON может не обработать его правильно.

Но если то, что выглядит как пробел в том, что вы опубликовали, полностью состоит из возвратов каретки, пробелов, табуляции, перевода строки и других классических пробелов, и если строка, которую вы передаете десериализатору SBJSON, - это то, что вы опубликовали, это проблема с SBJSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...