-1

iPhone開発初心者です。json回答として頂きました。

Drug以下のjson文字列から値を分離する方法:

{"arrCDrugEntity":
    [
       {
       "DrugID":1,
       "Drug":"Benadril",
       "Quantity":"",
       "Comment":"",
       "FunctionStatus":false,
       "ResultString":"",
       "ErrorString":""
       },
       {
       "DrugID":2,
       "Drug":"Dcold",
       "Quantity":"",
       "Comment":"",
       "FunctionStatus":false,
       "ResultString":"",
       "ErrorString":""
       },  
       { 
       "DrugID":3,
       "Drug":"Dolo",
       "Quantity":"",
       "Comment":"",
       "FunctionStatus":false,
       "ResultString":"",
       "ErrorString":""
       },  
       {
       "DrugID":4,
       "Drug":"Paracitamol",
       "Quantity":"",
       "Comment":"",
       "FunctionStatus":false,
       "ResultString":"",
       "ErrorString":""
        },
        { 
        "DrugID":5,
        "Drug":"Panadol",
        "Quantity":"",
        "Comment":"",
        "FunctionStatus":false,
        "ResultString":"",
        "ErrorString":""
        },
        {
        "DrugID":6,
        "Drug":"Pudin Hara",
        "Quantity":"",
        "Comment":"",
        "FunctionStatus":false,
        "ResultString":"",
        "ErrorString":""
         }
    ],
    "FunctionStatus":true,
    "UserID":-1,
    "DeliveryAddress":"",
    "ResultString":"",
    "ErrorString":""
}
4

5 に答える 5

1

SBJson.hクラスにインポートし、 JSONValuejson 文字列を辞書に変換するメソッドを使用します。

NSDictionary *dict = [yourJsonString JSONValue];
    NSArray *arr =  [dict valueForKey:@"arrCDrugEntity"];
    NSMutableArray *drugArray = [[NSMutableArray alloc] init];
    for (NSDictionary *drug in arr) {
        [drugArray addObject:[drug valueForKey:@"Drug"]];
    }
    NSLog(@"drugArray:%@",drugArray);

お役に立てると思います。

于 2013-01-03T11:09:44.140 に答える
1

このコードを使用

#import "JSONKit.h"

 NSDictionary *dictionary = [stringData objectFromJSONString];
 NSArray *arrayOfDrugs=[NSArray alloc] initWithArray:[dictionary valueForKey:@"arrCDrugEntity"];

 for (NSDictionary *drugDic in arrayOfDrugs)
 {
  NSLog(@"drug id is :%@",[drugDic valueForKey:@"DrugID"]);
  NSLog(@"drug is :%@",[drugDic valueForKey:@"Drug"]);
  NSLog(@"Quantity is :%@",[drugDic valueForKey:@"Quantity"]);
  NSLog(@"Comment is :%@",[drugDic valueForKey:@"Comment"]);
  NSLog(@"FunctionStatus is :%i",[[drugDic valueForKey:@"FunctionStatus"] intValue]);
  NSLog(@"ResultString is :%@",[drugDic valueForKey:@"ResultString"]);
  NSLog(@"ErrorString is %@",[drugDic valueForKey:@"ErrorString"]);
 }

単純なJSON ファイル を使用しますが、JSON ファイルのビルド設定で ARC を無効にする必要があります。

于 2013-01-03T10:42:59.260 に答える
1
NSString *str=@"http://your_web_server/your_file....";
NSURL *url=[NSURL URLWithString:str];
        NSData *data=[NSData dataWithContentsOfURL:url];
        NSError *error=nil;
        id *response=[NSJSONSerialization JSONObjectWithData:data options:
                                NSJSONReadingMutableContainers error:&error]; 

NSLog("Your JSON Object: %@ Or Error is: %@, response, error);

json データを取得するための次のコード

Dictionary *json = [myString JSONValue];

// Get the objects you want, e.g. output the second item's client id
NSArray *items = [json valueForKeyPath:@"arrCDrugEntity"];
NSLog(@" client Id : %@", [[items objectAtIndex:1] objectForKey:@"clientId"]);

これが役に立ちますように

于 2013-01-03T10:40:20.693 に答える
1

これを行うためにNSJSONSerializationを使用できます。

NSData *response = [yourJSONString dataUsingEncoding:NSUTF8StringEncoding];
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData: response options: NSJSONReadingMutableContainers error: &err];
于 2013-01-03T10:40:34.333 に答える
1

まず、JSON を JSON フォーマッターに通してから貼り付けてください。読みやすく、この Web サイトを使用してください。

http://jsonformatter.curiousconcept.com/

次に、良い JSON パーサーを見つけます。個人的には SBJSON を使用します。

http://stig.github.com/json-framework/

ダウンロードしたら、以下の例のように、非常に簡単に解析できます

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"drugData" ofType:@"json"];
NSData *myData = [NSData dataWithContentsOfFile:filePath];
NSString *responseString = [[NSString alloc] initWithData:myData encoding:NSUTF8StringEncoding];
 NSDictionary *MainJSON = [responseString JSONValue];

NSArray *array = [MainJSON valueForKey:@"arrCDrugEntity"];

for(int i = 0; i < [array count]; i++)
    {
        NSDictionary *temp = [array objectAtIndex:i];
        NSLog(@"%@", [temp valueForKey:@"Drug"]);
    }

編集:更新されたループ、それを解析するより良い方法。個々の薬物オブジェクトをループできるため、必要に応じてデータを薬物オブジェクトクラスに解析したい場合は簡単です

于 2013-01-03T10:40:45.713 に答える