0

私は少しjsonエンコードの問題があります:

phpサーバーに送信する前にオブジェクト形式のJSONをSBJSONでエンコードする必要があります。現時点では、このサンプルコードは機能します。

NSArray *arrayData = [NSArray arrayWithObjects:
                      user.id == nil ? [NSNumber numberWithInt:-1] : user.id,
                      ProfessionField.text, NameField.text, RPPSField.text, RPPSField.text,
                      NameField.text, SurnameField.text, StreetField.text,
                      TownField.text, CpField.text, MailField.text,
                      PhoneField.text, FaxField.text, MobileField.text,
                   //   [user.horaires JSONRepresentation],
                      nil];

NSArray *arrayKey = [NSArray arrayWithObjects:
                     @"id", @"spe", @"name", @"rpps", @"cip",
                     @"name", @"surname", @"rue",
                     @"ville", @"cp", @"mail", 
                     @"tel", @"fax", @"port", 
                    // @"horaires",
                     nil];

NSDictionary *dataBrut = [NSDictionary dictionaryWithObjects:arrayData forKeys:arrayKey];
NSDictionary *jsonDict = [NSDictionary dictionaryWithObject:dataBrut forKey:@"data"];
NSString *jsonRequest = [jsonDict JSONRepresentation];

問題は、このオブジェクトのJSON表現で「user.horaires」(ここではコメント)アプリケーションCRASHを送信する必要がある場合です。

このオブジェクトは、次のクラスの配列です。

@interface Horaire : NSObject
{ 
    BOOL morning;
}

@property (nonatomic, strong) NSNumber  *id;
@property (nonatomic, strong) NSString  *open;
@property (nonatomic, strong) NSString  *close;

誰かがこれをエンコードするのに成功する方法を知っていますか?

4

1 に答える 1

1

JSON表現をJSONアイテムとして含めるべきではありません。JSONは文字列データをうまく「エスケープ」しないため、埋め込まれたJSONは(個別に「エスケープ」しない限り)解析をチョークします。

代わりに、JSON表現の生成に使用されたディクショナリまたは配列(つまり、「user.horaires」自体)を、生成および挿入されている表現を表示する場所に配置する必要があります。次に、構造全体が1回の操作でJSONエンコードされます。

すなわち:

NSArray *arrayData = [NSArray arrayWithObjects:
                  user.id == nil ? [NSNumber numberWithInt:-1] : user.id,
                  ProfessionField.text, NameField.text, RPPSField.text, RPPSField.text,
                  NameField.text, SurnameField.text, StreetField.text,
                  TownField.text, CpField.text, MailField.text,
                  PhoneField.text, FaxField.text, MobileField.text,
                  user.horaires,
                  nil];
于 2012-05-15T16:02:38.667 に答える