2015-04-08 4 views
-1

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

{"team": [ 
     { 
     "name": "Manchester United FC", 
     "code": "MUFC" 
     }, 
     { 
     "name": "Swansea City", 
     "code": "SWA" 
     } 
     ] 
} 

код, который работает с выше JSON файла:

func jsonParsing() 
{ 
    let path: NSString = NSBundle.mainBundle().pathForResource("teams", ofType: "json")! 

    var data : NSData = NSData(contentsOfFile: path, options: NSDataReadingOptions.DataReadingMapped, error: nil)! 

    var dict: NSDictionary!=NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary 


    for var i = 0 ; i < (dict.valueForKey("team") as NSArray).count ; i++ 
    { 
     arrDict.addObject((dict.valueForKey("team") as NSArray) .objectAtIndex(i)) 
    } 



} 

Однако, когда мой файл JSON не имеет кавычки для названия, как на ниже это вызывает «неустранимая ошибка: неожиданно нашли ноль в то время как разворачивание необязательное значение» вопрос:

{team: [ 
     { 
     name: "Manchester United FC", 
     code: "MUFC" 
     }, 
     { 
     name: "Swansea City", 
     code: "SWA" 
     } 
     ] 
} 

таким образом, вы можете спросить, почему я не просто использовать кавычки, так это работает? Ну, я получаю информацию JSON с веб-сайта, поэтому должен использовать этот формат. Для более подробной информации о оригинальном формате файл проверке:

http://api.football-data.org/alpha/soccerseasons/354/teams

Итак, есть простая установка, я могу использовать, так он использует свой файл в формате JSON без необходимости всех двойных кавычек?

Большое спасибо заранее, Алан.

+1

Классы словаря JSON являются строками и * должны * быть заключены в кавычки. - Однако я не вижу, где в JSON, к которому вы привязались, находится ключ без кавычек *, который действительно действителен JSON. –

+1

Перейдите на json.org и изучите синтаксис JSON. (И позор вам, если вы этого уже не сделали.) –

+0

(При просмотре в качестве веб-страницы на сайте, на котором вы ссылаетесь, отсутствует кавычки, но когда вы просматриваете фактический источник страницы, там есть цитаты.) –

ответ

0

Следующая, кажется, работает:

{ 
    //let path: NSString = NSBundle.mainBundle().pathForResource("teams", ofType: "json")! 

    //var data : NSData = NSData(contentsOfFile: path, options: NSDataReadingOptions.DataReadingMapped, error: nil)! 

let url2 = NSURL(string: "http://api.football-data.org/alpha/soccerseasons/354/teams") 

let data = NSData(contentsOfURL: url2!) 

var dict = NSJSONSerialization.JSONObjectWithData(data!, options: nil, error: nil) as NSDictionary 

    // var dict: NSDictionary!=NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary 


    for var i = 0 ; i < (dict.valueForKey("teams") as NSArray).count ; i++ 
    { 
     arrDict.addObject((dict.valueForKey("teams") as NSArray) .objectAtIndex(i)) 
    } 



} 

Но теперь я еще больше запутался, как все говорят, что исходный файл не непросроченный:/Мысли кто-либо?

+0

JSON из http://api.football-data.org/alpha/soccerseasons/354/teams действителен, но второй JSON в вашем вопросе недействителен. Как они связаны? –

+0

Извините, но я, хотя второй вопрос JSON в этом вопросе был таким же, как JSON с сайта api.football-data.org/alpha/soccerseasons/354/teams. Как и в ключах, не имеют меток кавычек. Извините, если я ошибся в своих мыслях. –

+0

Ключи в JSON с этого веб-сайта * заключены в кавычки. Таким образом, на самом деле проблем нет. –

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