0

JSON を使用して、PHP ファイルからの出力を解析しようとしています。これにより、MySQL データベースからデータが返されることが期待されます。ただし、次のエラーが表示されます: -JSONValue が失敗しました。エラー: トークン [A] の開始が不正です。PHP スクリプトは、地図上に注釈をプロットするための辞書の配列を返します。私は何を間違っていますか?

- (void)getDeviceLocations {

    NSLog(@"Getting Device Locations");

    NSString *hostStr = @"http://98.246.50.81/firecom/api/getdevicelocations.php";
    NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:hostStr]];
    NSString *serverOutput = [[NSString alloc] initWithData:dataURL encoding: NSASCIIStringEncoding];
    id object = [serverOutput JSONValue];
    NSMutableArray *array = (NSMutableArray *)object;

    for (NSDictionary *dictionary in array) {

        CLLocationCoordinate2D coord = {[[dictionary objectForKey:@"latitude"] doubleValue], [[dictionary objectForKey:@"longitude"] doubleValue]};

        Annotation *ann = [[Annotation alloc] init];
        ann.title = [dictionary objectForKey:@"deviceid"];
        ann.coordinate = coord;
        [mapView addAnnotation:ann];
    }
}
4

1 に答える 1

0

コメントしたように、あなたの JSON は有効ではありません。このような有効な JSON を返す必要があります (データを使用)

[
  {
    "latitude": 45.5113,
    "deviceid": "E19 iPad",
    "longitude": "-122.800233"
  },
  {
    "latitude": 45.5458,
    "deviceid": "E05 iPad",
    "longitude": "-122.9588931798935"
  },
  {
    "latitude": 45.5207,
    "deviceid": "E01 iPad",
    "longitude": "-122.98941537737846"
  }
]

デフォルトのphp JSONエンコードメソッド json_encodeを使用してjson文字列を生成する方が良いと思います。

于 2012-12-28T04:23:47.140 に答える