【问题标题】:Nsdictionary Format issue字典格式问题
【发布时间】:2017-11-16 07:31:04
【问题描述】:

对于数据库中的答案列,我有以下格式的答案(来自服务器)。

在应用程序端更新答案并将其保存到数据库时,它被修改为以下格式。(即:被 = 替换)我想保持相同的格式。有人可以让我知道是什么问题吗?我正在使用 NSDictionary 访问键值对并将最终的 nsdictionary 分配给 DB。

【问题讨论】:

  • JSON 字符串表示中的字典与调用NSDictionary 对象的description 方法之间存在差异。

标签: objective-c nsstring nsdictionary


【解决方案1】:

诀窍是在将它传递给 NSSTRING 之前有一个 NSJSONSerialization

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:YOUR_OBJECT options:0 error:&error];


NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

【讨论】:

    【解决方案2】:

    正如@Larme 指出的-[NSDictionary description] 不返回字典的JSON 表示。 NSArray 的工作方式类似。

    NSDictionary的描述格式如下。

    {
        key1 = value1;
        key2 = value2;
        ...
        keyN = valueN;
    }
    

    NSArray 的描述如下:

    (
        object1,
        object2,
        ...
        objectN
    )
    

    为了从字典中获取 JSON,您应该使用 NSJSONSerialization(或第三方库)。

    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:response options:0 error:nil];
    //Use line below to see formatted JSON
    //NSData *jsonData = [NSJSONSerialization dataWithJSONObject:response options:NSJSONWritingPrettyPrinted error:nil]; 
    NSString *string = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    

    【讨论】:

      【解决方案3】:

      NSDictionary 和包含 JSON 的 NSString 不是同一个对象,所以它们的格式不一样。当您使用 NSLog 打印这些对象时,它会调用这些对象的描述方法。此方法返回 NSString 的字符串和 NSDictionary 的特定格式字符串。

      如果您想检索 JSON 格式,您需要再次将您的 NSDictionary 转换为 JSON 字符串,如下所示:

      NSError *error;
      NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:0 error:&error];
      NSString *strJson = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
      
      if (error)
          NSLog(@"An error occured");
      

      然后:

      NSLog(@"%@", strJson);
      

      我希望我的英语是可以理解的。不要犹豫,纠正我。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-09
        • 1970-01-01
        相关资源
        最近更新 更多