NSString
として保存されている次のデータがあります。
{
Key = ID;
Value = {
Content = 268;
Type = Text;
};
},
{
Key = ContractTemplateId;
Value = {
Content = 65;
Type = Text;
};
},
このデータを、キーと値のペアを含むNSDictionary
に変換します。
私は最初にNSString
をJSONオブジェクトに次のように変換しようとしています:
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
しかし、私が試みるとき:
NSString * test = [json objectForKey:@"ID"];
NSLog(@"TEST IS %@", test);
NULL
として値を受け取ります。
誰でも問題を提案できますか?
キー値のJSON形式を誤って解釈していると思います。あなたの文字列として保存する必要があります
NSString *jsonString = @"{\"ID\":{\"Content\":268,\"type\":\"text\"},\"ContractTemplateID\":{\"Content\":65,\"type\":\"text\"}}";
NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSLogステートメントを次のようにすると
NSLog(@"%@",[json objectForKey:@"ID"]);
結果は別のNSDictionaryになります。
{
Content = 268;
type = text;
}
これが明確な理解を得るのに役立つことを願っています。
応答から配列を取得するので、配列に応答を割り当てる必要があります。
NSError * err = nil; NSArray * array = [NSJSONSerialization JSONObjectWithData:[string dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:&err]; NSDictionary * dictionary = [array objectAtIndex:0];
NSString * test = [dictionary objectForKey:@ "ID"];
NSLog(@ "Test is%@"、test);
StrがJSON文字列の場合、次のコードを使用します。
NSError *err = nil;
NSArray *arr =
[NSJSONSerialization JSONObjectWithData:[str dataUsingEncoding:NSUTF8StringEncoding]
options:NSJSONReadingMutableContainers
error:&err];
// access the dictionaries
NSMutableDictionary *dict = arr[0];
for (NSMutableDictionary *dictionary in arr) {
// do something using dictionary
}
スウィフト3:
if let jsonString = styleDictionary as? String {
let objectData = jsonString.data(using: String.Encoding.utf8)
do {
let json = try JSONSerialization.jsonObject(with: objectData!, options: JSONSerialization.ReadingOptions.mutableContainers)
print(String(describing: json))
} catch {
// Handle error
print(error)
}
}
次のコードを使用して、AFHTTPSessionManager
エラーブロックから応答オブジェクトを取得します。次に、ジェネリック型を必要なデータ型に変換できます。
id responseObject = [NSJSONSerialization JSONObjectWithData:(NSData *)error.userInfo[AFNetworkingOperationFailingURLResponseDataErrorKey] options:0 error:nil];