2016-06-20 11 views
1
からリクエスト全体がUTF-8私は、単純なNSURLSession GETリクエストを作っています

を作成し、私は右のデータを返していると私は、データがもはやUTF-8私はできないのですある一点にそれをシリアライズすることができています子供のキーを呼び出す。NSURLSession

は私のデータは次のようになります。あなたが見ることができるように

[ 
{ 
    "GeoJsonData":"{\"type\":\"Feature\",\"properties\":{},\"geometry\":{\"type\":\"LineString\",\"coordinates\":[[-119.1968536376953,35.5229358991794],[-119.19696092605591,35.52019399894053],[-119.19206857681274,35.520141605030304],[-119.19204711914062,35.52003681710729],[-119.18736934661865,35.52007174643016],[-119.18730497360228,35.52213254957543],[-119.18839931488039,35.52215001378275],[-119.18842077255249,35.522813650845336],[-119.19696092605591,35.522918435143076]]}}", 
    "GeoJsonCenter":"{\"lat\":35.52148635814335,\"lng\":-119.1921329498291}" 
}, 
{ 
    "GeoJsonData":"{\"type\":\"Feature\",\"properties\":{},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-112.42687225341795,33.49409462250672],[-112.42678642272949,33.47605511894646],[-112.42549896240234,33.47605511894646],[-112.42103576660156,33.48822503770075],[-112.41022109985352,33.49438093353938],[-112.42687225341795,33.49409462250672]]]}}", 
    "GeoJsonCenter":"{\"lat\":33.48521802624292,\"lng\":-112.41854667663574}" 
} 
] 

そこにエスケープ文字をたくさんしていると私は反復処理する必要があり、この配列内の85個のオブジェクトを持っていると私は子供たちに降りたら、これらのオブジェクトのうち、私はそれらのオブジェクトを呼び出すことができません。私のコードの

例:

 NSMutableArray *geoJSONData = [[NSMutableArray alloc] init]; 

    for (NSDictionary *item in jsonArray){ 
     [geoJSONData addObject:[item objectForKey:@"GeoJsonData"]]; 

    } 

    for (NSDictionary *item in geoJSONData) { 

    NSLog(@"%@", [item objectForKey:@"coordinates"]); 
              } 

それはエスケープ文字で包み、私はそれらを取得する必要がありますされているので、そのキー「座標」を見つけることができないので、最後のNSLogは、コンソールを吹くまで。

は、誰もがそう私は私のオブジェクトはJSONとして完全にシリアル化された作業をすることができ、これを解決するための最良の方法を、この問題に遭遇していただきましています。物事が変更されているので、

任意のヘルプ

が大幅に高く評価され、イムはちょうど... AngularJsからのObjective-Cと私はNSUrlRequestを使用のObjective-Cで働いていた最後の時間に戻ってき。

答えて

1

表示されたデータが実際の表現である場合は、小さな問題があります。キーGeoJsonDataの値はオブジェクトではなく文字列です。つまり、JSON.stringify()を使用してシリアル化され、親オブジェクトに追加されたオブジェクトです。かなり奇妙な構成なので、それがサーバーから送信された実際のJSON表現であるかどうかを尋ねています。

coordinatesにアクセスしようとすると、その文字列を解析して有効なオブジェクトを取得し、通常のNSDictionaryとしてそのプロパティにアクセスできるようになります。今すぐ書き込みは文字列です。

ちょうどあなたのGeoJsonDataをデコードするNSJSONSerializationクラスを使用します。

+0

あなたが正しいと思うのは文字列であり、実際のJSONがサーバーから戻ってきています。 APIレベルでエラーになりました。 – Keeano