Проверка JSON - PullRequest
       17

Проверка JSON

2 голосов
/ 07 января 2011

Я пытаюсь работать с json-framework на iPhone, чтобы разобрать строку json. Когда я вызываю этот метод:

NSDictionary *dictionary = [jsonString JSONValue];

Я получаю ошибку:

"Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"Object value expected for key:
 Options\" UserInfo=0x4b5f390 {NSUnderlyingError=0x4b5f320 \"Expected value while
 parsing array\", NSLocalizedDescription=Object value expected for key: Options}"

Согласно этому валидатору json [1]: http://www.jsonlint.com// мой json недействителен. Но так ли это?

Моя строка JSON выглядит так:

{
"Options": [
    {
        "ID": "7",
        "A": "1",
        "EAt": new Date(2011,
        0,
        7,
        12,
        30,
        0),
        "Type": "Binary",       
    } 
}

* Отредактировано Json: (по-прежнему выдает ошибку)

{
"Options": [
    {
        "ID": "7",
        "A": "1",
        "EAt": new Date(2011,
        0,
        7,
        12,
        30,
        0),
        "Type": "Binary"       
    } 
 ]
}

Ответы [ 3 ]

4 голосов
/ 07 января 2011

Ваш JSON недействителен.

Это потому, что вы не можете создавать экземпляры объектов в JSON. Это недопустимое значение.

new Date(2011, 0, 7, 12, 30, 0)

И вы пропустили скобку закрывающего массива. Все остальное в порядке.

3 голосов
/ 07 января 2011
  1. удалить запятую после ... Двоичный "
  2. добавить] между двумя}}.
  3. Дата не может использоваться таким образом, см. Как мне отформатировать дату Microsoft JSON? и http://msdn.microsoft.com/en-us/library/bb299886.aspx#intro_to_json_sidebarb

Это действительно:

{
    "Options": [
        {
            "ID": "7",
            "A": "1",
            "EAt": "new Date(2011,0,7,12,30,0)",
            "Type": "Binary" 
        } 
    ] 
}
1 голос
/ 07 января 2011

Вы не можете создавать экземпляры объектов Date (или любых объектов) в строке JSON.

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

Если бы я был вами, я бы попросил их поместить строку текущей даты в это поле (так:"2011-07-01 12:30:00"), а затем проанализируйте это в своем объектном объекте NSDateFormatter.

Если что-либо говорит о том, что JSON не является чем-то, что вы можете изменить, вы всегда можете изменить его локальноперед подачей его в библиотеку JSON.Это просто строка, ничего волшебного.

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