0

JSONModel JSON パーサー (優れたライブラリー!) を使用していますが、この JSON 応答の解析で問題が発生しています: http://api.setlist.fm/rest/0.1/search/setlists.json?cityName=vilalba 興味深い JSON応答のコードは次のコードです。

{
 "setlists":{
  "@itemsPerPage":"20",
  "@page":"1",
  "@total":"5",
  "setlist":[
   {
    "@eventDate":"12-04-2014",
    "@id":"3bc38430",
    "@lastUpdated":"2014-04-13T16:28:36.000+0000",
    "@versionId":"53943b55",
    "artist":{
     "@disambiguation":"",
     "@mbid":"8d1e76c8-80b0-44b9-9e86-25d148323a9e",
     "@name":"Izal",
     "@sortName":"Izal",
     "url":"http:\/\/www.setlist.fm\/setlists\/izal-43dc3b23.html"
    },
    "venue":{
     "@id":"73d64e85",
     "@name":"Plaza de La Constitución",
     "city":{
      "@id":"3105522",
      "@name":"Vilalba",
      "@state":"Galicia",
      "@stateCode":"58",
      "coords":{
       "@lat":"43.3",
       "@long":"-7.6833333"
      },
      "country":{
       "@code":"ES",
       "@name":"Spain"
      }
     },
     "url":"http:\/\/www.setlist.fm\/venue\/plaza-de-la-constitucion-vilalba-spain-73d64e85.html"
    },
    "sets":{
     "set":{
      "song":[
       {
        "@name":"Despedida"
       },
       {
        "@name":"Hambre"
       },
       {
        "@name":"Jenna Fisher"
       },
       {
        "@name":"La mujer de verde"
       }
      ]
     }
    },
    "url":"http:\/\/www.setlist.fm\/setlist\/izal\/2014\/plaza-de-la-constitucion-vilalba-spain-3bc38430.html"
   }
 }
}

私のモデルは次のようになります。

@interface Concert : JSONModel

@property (nonatomic, strong) NSString *concertId;
@property (nonatomic, strong) ConcertArtist *concertArtist;
@property (nonatomic, strong) ConcertPlace *concertPlace;
@property (nonatomic, strong) NSString *concertDate;
@property (nonatomic, strong) NSArray<Optional, ConcertSet> *concertSets;
@property (nonatomic) NSNumber<Ignore> *concertSongsNumber;

@end

@interface ConcertSet : JSONModel

@property (nonatomic, strong) NSDictionary<ConcertSong,Optional> *setSongs;
@property (nonatomic) NSNumber<Optional> *setNumEncore;

@end

すべてうまくいきますが、「セット」JSON コードを解析すると、次のエラーが発生します。

Invalid JSON data. The JSON type mismatches the expected type. Check the error user information.
kJSONModelTypeMismatch=Property 'concertSets' is declared as NSArray<ConcertSet>* but the corresponding JSON value is not a JSON Array.
kJSONModelKeyPath=concerts.concertSets}

コードにエラーが見つかりません。JSON データ形式のエラーの一種ではないかと考えています。その場合、どのような解決策が考えられるでしょうか?前もって感謝します!パブロ・ブランコ

更新: Ican Zilb が言ったように、「concert」と「set」の間に別のオブジェクトがあります:「sets」です。次のようにクラスを更新すると、解析が完璧になります。ありがとう!

@interface Concert : JSONModel
@property (nonatomic, strong) NSString *concertId;
@property (nonatomic, strong) ConcertArtist *concertArtist;
@property (nonatomic, strong) ConcertPlace *concertPlace;
@property (nonatomic, strong) NSString *concertDate;
@property (nonatomic, strong) ConcertSets<Optional> *concertSets;
@property (nonatomic) NSNumber<Ignore> *concertSongsNumber;
@end

@protocol ConcertSets
@end
@interface ConcertSets : JSONModel
@property (nonatomic, strong) NSArray<ConcertSet,Optional> *concertSets;
@end

@protocol ConcertSet
@end
@interface ConcertSet : JSONModel
@property (nonatomic, strong) NSArray<ConcertSong,Optional> *setSongs;
@property (nonatomic) NSNumber<Optional> *setNumEncore;
@end
4

1 に答える 1