0

この JSONModel の例に従う

#import "CountryModel.h"
...

NSString* json = (fetch here JSON from Internet) ... 
NSError* err = nil;
CountryModel* country = [[CountryModel alloc] initWithString:json error:&err];

こんな風に真似します

// ここにクラス #import "JSONModel.h" があります

@interface OrderNumberModel : JSONModel
@property (strong, nonatomic) NSString* OrderNumber;
@property (strong, nonatomic) NSString* OrderDate;

@end


NSString* json = (fetch here JSON from Internet) ... 

NSError* err = nil;
OrderNumberModel *order = [[OrderNumberModel alloc] initWithString:result error:&err];

NSLog(@"Order Number: %@ Order Date: %@", order.OrderNumber, order.OrderDate);

クラスのinitメソッドがinitWithStringの場合、jsonを文字列として取得するにはどうすればよいですか? 私が見たほとんどの例は NSData です。私のローカル サーバー メソッドの URL は、新しい orderNumber と現在の日付を返します。NSURL *url = [NSURL URLWithString:@"http://myserver/service/api/punumber/"]戻り値 =>["13025","11/12/2013 2:26:24 PM"] ありがとうございます。

4

2 に答える 2

0

サーバーはオブジェクト (文字列のリストではなく) を返しません。したがって、モデル クラスで応答を解析することはできません。

たとえば、サーバーが返された場合:

{"OrderNumber":"13025", "OrderDate":"11/12/2013 2:26:24 PM"}

JSONModel は JSON キー名をクラス プロパティ名に一致させることができるため、モデル クラスを使用してこれを解析できます。

@interface OrderNumberModel : JSONModel
@property (strong, nonatomic) NSString* OrderNumber;
@property (strong, nonatomic) NSString* OrderDate;
@end

しかし、サーバーは 2 つの文字列を返すだけなので、キーがなければモデル クラスに自動的にマップすることはできません。

ただし、できることは、JSONModel の組み込み HTTP クライアントを使用することです。

#import "JSONModel+networking.h"

[JSONHTTPClient getJSONFromURLWithString:@"your URL as string"
    completion:^(id json, JSONModelError *err) {
        NSArray* array = (NSArray*)json;
        NSString* orderNr = array[0];
        NSString* orderDate = array[1];
}];
于 2013-11-13T08:16:04.017 に答える