0

重複の可能性:
UTF-8 JSONiossdkを解析します

[4,"1.0",1347139911696]
[0,"Neathouse Place","58226","STBC",154,"L",51.495322,-0.141808]
[0,"Vauxhall Bridge Rd / Victoria Stn","59516","STBC",160,"Z9",51.495931,-0.142216]
[0,"VICTORIA, VAUXHALL BRIDGE ROAD (EAST)",null,null,0,null,51.495839,-0.142119]
[0,"Vauxhall Bridge Rd / Victoria Stn","54249","STBC",256,"M",51.496573,-0.141354]

このタイプのデータを解析する方法。

このリンクを確認してください。

サービスプロバイダーによると、UTF-8JSONデータ型です。そうでない場合は、どのタイプのデータであり、どのように解析するかを教えてください。

私を助けてください。

ありがとう。

4

1 に答える 1

1

最初に気付くのは、データは実際には5つの別個の有効なJSON配列であるということです。jsonlint.comJSONで検証できます。

それらから何か有用なものを作るには、応答を行で分割する必要があります。改行文字を区切り文字として使用できます。

// stringWithContentsOfURL: used for demonstration
NSURL *sourceURL = [NSURL URLWithString:@"http://countdown.api.tfl.gov.uk/interfaces/ura/instant_V1?Circle=51.49598,-0.14091,100&StopPointState=0&ReturnList=StopCode1,StopPointName,Bearing,StopPointIndicator,StopPointType,Latitude,Longitude"];
NSString *actualResponse = [NSString stringWithContentsOfURL:sourceURL encoding:NSUTF8StringEncoding error:nil];
NSArray *individualJSONArrays = [actualResponse componentsSeparatedByString:@"\n"];

これNSArrayで、5つの有効ながありますJSON NSStrings。それらのいずれかを処理するか、次のNSように列挙することですべてを-Classオブジェクトに変換できます。

NSMutableArray *jsonObjects = [[NSMutableArray alloc] init];
for (NSString *jsonString in individualJSONArrays) {
    NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingAllowFragments error:nil];
    if (jsonArray){
        [jsonObjects addObject:jsonArray];
    }
}
NSLog(@"%@",jsonObjects);

これで、NSArrayでいっぱいになりましNSArraysた。

于 2012-09-09T02:15:26.753 に答える