2013-08-26 38 views
1

我使用RESTKit做一些對象映射爲JSON,我映射一個數組擺脫多組括號。我是映射的JSON看起來是這樣的:"parameters":[{"parameter_value":["Smith"]}, {"parameter_value":[66211]}]如何在一個數組

是我得到看起來像這樣的數組:

Parameter Value: (
     (
     Smith 
    ), 
     (
     66211 
    ) 
) 

當我試圖通過這個代碼將數組轉換爲字符串:NSString *nameidvalue = [[parameterValueArray valueForKey:@"description"] componentsJoinedByString:@""];的串nameidvalue變成這樣:

(
    Smith 
)(
    66211 
) 

究竟如何擺脫括號這樣的東西我留下的是史密斯,66211

+1

您是如何創建您正在打印的陣列的?它看起來不像第一段代碼片段中的那個,所以我假設你正在以某種方式編輯它。我們可以看到這些代碼嗎? – Jsdodgers

回答

0

ŧ RY如..訪問參數值的Objectforkey並存儲到dicitonary,然後訪問史密斯的objectforkey和值存儲爲一個字符串。

NSError *e = nil; 
NSMutableArray *JSON = [NSJSONSerialization JSONObjectWithData: data options: NSJSONReadingMutableContainers error: &e]; 
NSDictionary *value = [JSON objectforkey:@"parameter_value"]; 

您會得到期望值。

0

嘗試

NSString *nameidvalue = [[parameterValueArray valueForKey:@"parameters"] componentsJoinedByString:@""]; 
2

你問到消除「套括號」,但考慮到底層結構是一系列嵌套集合(字典和數組),可以通過有效地摺疊一個達到預期的效果一級或兩級從該結構。您可以使用KVC collection operator@unionOfArraysvalueForKeyPath一起使用。如果你真的想做一個字符串操作,我們可以做到這一點,但它似乎更符合邏輯寫呈現一個簡單的數組的代碼,然後你可以使用componentsJoinedByString如果你真的想在最後一個簡單的字符串。

是什麼讓這個答案有點複雜的是,報告的JSON與NSDictionaryNSLog不匹配,所以我不清楚輸入是什麼。所以我要告訴這個KVC收集運營商,一個是所提供的樣品JSON匹配的兩個置換,另一個,我從您報告的NSDictionary結構推斷的JSON相匹配。


如果JSON是:

{"parameters":[{"parameter_value":["Smith"]}, {"parameter_value":[66211]}]} 

然後,您可以解析如下(我使用的是NSJSONReadingMutableContainers,這樣我可以改變的結果;如果你不試圖改變陣列,而只是提取相應的結果,那麼你就需要使它易變,它是由你):

NSMutableDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data 
                    options:NSJSONReadingMutableContainers 
                    error:&error]; 

這將產生一個NSMutableDictionary結構將是:

{ 
    parameters =  (
       { 
      "parameter_value" =    (
       Smith 
      ); 
     }, 
       { 
      "parameter_value" =    (
       66211 
      ); 
     } 
    ); 
} 

但你可以取代parameters有:

dictionary[@"parameters"] = [dictionary[@"parameters"] valueForKeyPath:@"@unionOfArrays.parameter_value"]; 

產量:

{ 
    parameters =  (
     Smith, 
     66211 
    ); 
} 

但是,如果你有喜歡的JSON:

{"parameters":[["Smith"],[66211]]} 

如果您解析了與上述同樣的NSJSONSerialization,這將產生像一本字典:

{ 
    parameters =  (
       (
      Smith 
     ), 
       (
      66211 
     ) 
    ); 
} 

而且你可以取代使用KVC收集操作@unionOfArrays再次參數值,此時使用self

dictionary[@"parameters"] = [dictionary[@"parameters"] valueForKeyPath:@"@unionOfArrays.self"]; 

這將產生:

{ 
    parameters =  (
     Smith, 
     66211 
    ); 
} 

你問:

究竟如何擺脫括號我留下那麼,什麼是與史密斯,66211

如果,從字面上看,就是想@"Smith, 66211",然後你可以只是藉此簡化陣列和現在使用componentsJoinedByString

NSString *string = [dictionary[@"parameters"] componentsJoinedByString:@", "]; 
0

替換,

NSString *nameidvalue = [[parameterValueArray valueForKey:@"description"] componentsJoinedByString:@","];