【问题标题】:How to store values of JSON in ARRAY/ String如何将 JSON 的值存储在 ARRAY/String 中
【发布时间】:2011-05-18 12:09:57
【问题描述】:

我有以下 JSON 值:

-(
            { Key   = IsEmail;
              Value = 1;     },

            { Key   = TrackingInterval;
              Value = 20;    },

            { Key   = IsBackup;
              Value = 1;     },

            { Key   = WipeOnRestore;
              Value = 1;     }
)

我怎样才能把这个对象解析成一个数组或字符串? - 即每个 key 值存储在一个数组中,每个 Value 存储在另一个数组中。

请帮帮我。

谢谢:)

【问题讨论】:

    标签: iphone objective-c ios4 iphone-sdk-3.0


    【解决方案1】:

    这种方法使用json-framework。

    我已经缩短了你的例子:

    NSString *jsonString = @"[{\"Key\":\"IsEmail\",\"Value\":\"1\"},{\"Key\":\"TrackingInterval\",\"Value\":\"20\"},{\"Key\":\"IsBackup\",\"Value\":\"1\"}]";
    
    NSMutableArray *keys = [NSMutableArray array];
    NSMutableArray *values = [NSMutableArray array];    
    
    NSArray *json = [jsonString JSONValue];
    
    for (NSDictionary *pair in json) {
        [keys addObject:[pair objectForKey:@"Key"]];
        [values addObject:[pair objectForKey:@"Value"]];        
    }
    
    NSLog(@"%@", keys); 
    NSLog(@"%@", values);
    

    输出:

    2011-05-18 14:23:55.698 [36736:207] (
        IsEmail,
        TrackingInterval,
        IsBackup
    )
    2011-05-18 14:23:55.700 [36736:207] (
        1,
        20,
        1
    )
    

    【讨论】:

    • 你为什么使用两个单独的数组而不是字典?
    • @FreeAsInBeer 因为 OP 要求它:“...eack 键值存储在一个数组中,每个值存储在另一个数组中。”
    • =) 不错。我没有读到他问题的结尾。这是一种非常奇怪的存储方式。一般来说,根据我的经验,您不希望将相关信息存储在单独的对象中,而它们之间没有良好的链接。在这种情况下,唯一的链接是索引,很容易搞砸。
    • @FreeAsInBeer 你是绝对正确的,但我没有心情反对,所以我只是编写了一个直接回答 OP 要求的代码。
    【解决方案2】:
    【解决方案3】:

    您的数据不是 vald json,您可能希望将其结构更像这样:

    var theObj = { IsEmail: 1, TrackingInterval: 20, IsBackup: 1, WipeOnRestore: 1 };
    

    然后你可以像这样填充你的键和值数组:

    var keys = new Array();
    var values = new Array();
    
    for (prop in theObj) {
        keys.push(prop);
        values.push(theObj[prop]);
    }
    

    【讨论】:

      【解决方案4】:

      如果 JSON 格式如下,

      responseString=[ {
              Key = IsEmail;
              Value = 1;
          },
                  {
              Key = TrackingInterval;
              Value = 20;
          },
                  {
              Key = IsBackup;
              Value = 1;
          },
                  {
              Key = WipeOnRestore;
              Value = 1;
          }] 
      
       then,
      
      NSArray *resultArray=[responseSrting JSONValue];
      
      NSMuatbleArray *keyArray=[[NSMutableArray alloc] init];
      
      NSMutableArray *valueArray=[[NSMutableArray alloc] init];
      
      for(NSDictionary *dict in resultsArray){
      
      [keyArray addObject:[dict objectForKey:@"Key"]];
      
      [valueArray addObject:[dict objectForKey:@"Value"]];
      
      }
      

      然后,所有的键都存储在 keyArray 中,所有的值都存储在 valueArray 中

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-16
        • 2021-06-01
        • 2017-01-30
        • 2020-11-01
        • 1970-01-01
        相关资源
        最近更新 更多