2016-12-14 75 views
0

Here is the screenshot of the log console把JSON元素放在一個數組中

我想解析一個JSON,但是沒有這樣做。以下是Json。

我想將每個鍵的元素放入數組中。例如一個數組中的鍵「itemid」的值和另一個數組中的鍵「itemname」的值。

(
    { 
    itemid = 2; 
    itemname = "BABY & KIDS"; 
    ordernum = 2; 
}, 
    { 
    itemid = 9; 
    itemname = BOOKS; 
    ordernum = 7; 
}, 
    { 
    itemid = 8; 
    itemname = "COMPUTERS & GAMING"; 
    ordernum = 6; 
}, 
    { 
    itemid = 1; 
    itemname = ELECTRONICS; 
    ordernum = 1; 
}, 
    { 
    itemid = 5; 
    itemname = "HOME & KITCHEN"; 
    ordernum = 5; 
}, 
    { 
    itemid = 3; 
    itemname = MEN; 
    ordernum = 3; 
}, 
    { 
    itemid = 10; 
    itemname = "MOBILE & TABLETS"; 
    ordernum = 8; 
}, 
    { 
    itemid = 4; 
    itemname = WOMEN; 
    ordernum = 4; 
} 
) 
+0

也許你應該指定語言。 – emKaroly

+0

@emKaroly對不起,只是編輯它。 :) –

+0

你是從響應獲取JSON數組或JSON字典嗎?或者它是假的JSON? – Pushkraj

回答

1

嘿謝謝大家回覆, 首先它不是一個虛擬的JSON!

這裏是答案。

NSURL * url=[NSURL URLWithString:@"url"]; 
NSData * data=[NSData dataWithContentsOfURL:url]; 
NSError * error; 
array = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; 

    _itemName=[array valueForKey:@"itemname"]; 
    _itemId=[array valueForKey:@"itemid"]; 
+0

太棒了,你解決了! :) – Pushkraj

+0

@Pushkraj是的,我沒有:) –

+0

你的問題和你的答案,奇怪:) 你也可以upvote我的。 – Pushkraj

2

在斯威夫特,你可以這樣做

var itemIDArray = [Int]() 
var itemNameArray = [String]() 

for dict in responseArray{ 

    itemIDArray.append(dict["itemid"] as! Int) 
    itemNameArray.append(dict["itemname"] as! String) 
    .... 
} 

,並在目標C

NSMutableArray *itemIDArray = [[NSMutableArray alloc] init]; 
NSMutableArray *itemNameArray = [[NSMutableArray alloc] init]; 

for NSDictionary *dict in responseArary{ 

    itemIDArray.addObject(dict.valueForKey[@"itemid"]) 
    itemIDArray.addObject(dict.valueForKey[@"itemname"]) 
    .... 
} 

希望這有助於。

+0

請不要在Swift中提示'NSMutableArray'。 – vadian

+0

@vadian yaah,我會更新它。 – PiyushRathi

+0

我編輯了你的答案,提供了實際的類型和演員。 – vadian

1

好了,所以做這個事情

讓假設NSArray *myResponse是你的陣列。

NSMutableArray *arrayItemIds = [[NSMutableArray alloc]init]; 
for (int i=0; i<myResponse.count;i++){ 
    [arrayItemIds addObject:[[myResponse objectAtIndex:i]valueForKey:@"itemid"]]; 
} 

NSLog(@"My ID List: %@",arrayItemIds); 

同樣適用於itemname和ordernum。

1
- (void)simpleJsonParsing 
{ 
    //-- Make URL request with server 
    NSHTTPURLResponse *response = nil; 
    NSString *jsonUrlString = [NSString stringWithFormat:@"http://domain/url_link"]; 
    NSURL *url = [NSURL URLWithString:[jsonUrlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 

    //-- Get request and response though URL 
    NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url]; 
    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; 

    //-- JSON Parsing 
    NSMutableArray *jsonResult = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:nil]; 
    NSLog(@"Result = %@",jsonResult); 

    for (NSMutableDictionary *dic in jsonResult) 
    { 
     NSString *string = dic[@"array"]; 
     if (string) 
     { 
      NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding]; 
      dic[@"array"] = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; 
     } 
     else 
     { 
      NSLog(@"Error in url response"); 
     } 
    } 

    NSMutableArray *arrItemID = [NSMutableArray new]; 
    NSMutableArray *arritemname = [NSMutableArray new]; 
    NSMutableArray *arrordernum = [NSMutableArray new]; 

    for (int i = 0; i< jsonResult.count; i++) { 
     [arrItemID addObject:jsonResult[i][@"itemid"]]; 
     [arritemname addObject:jsonResult[i][@"itemname"]]; 
     [arrordernum addObject:jsonResult[i][@"ordernum"]]; 
    } 


} 

希望這有助於你。你的所有數據在不同的陣列中。

相關問題