2011-01-07 3 views
2

Я пытаюсь работать с json-framework на iPhone для анализа строки json. Когда я звоню этот метод:Проверка 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",  
    } 
} 

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

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

удалить запятую после ... Двоичный « – powtac

ответ

3
  1. удалить запятую после ... Binary»
  2. добавить] между двумя}}.
  3. Дата не может быть использована следующим образом: How do I format a Microsoft JSON date? и 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" 
     } 
    ] 
} 
+0

мой плохой. Я разрезал json и разместил только часть его (1 объект) здесь, и я забыл обрезать его хорошо. Но это не проблема, хотя. – Rizon

+0

Итак, вы говорите, что мне нужно дать указание моему разработчику Webservice изменить способ возврата json? – Rizon

+0

Добавить «arround the Date – powtac

4

Ваш JSON не является действительным.

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

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

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

1

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

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

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

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