【问题标题】:JSON creation in objective c, invalid JSON在目标 c 中创建 JSON,无效 JSON
【发布时间】:2017-04-19 21:16:47
【问题描述】:

我正在创建一个JSON,以便在在线检查其显示错误时发送服务:

错误:第 1 行的解析错误: [{\ "SAHExpertCode\" --^ 期待 'STRING'、'}',得到 'undefined' 我的 JSON 是 [{\"SAHExpertCode\" : \"\", \"ShiftType\" : \"AM\", \"LocFunId\" : \"CLT0004218\", \"SAHQualCode\" : \"CA\ " }] 请告诉我出了什么问题以及如何纠正它。首先我正在制作 JSON filterString = [{ "SAHExpertCode" : "", "ShiftType" : "AM", "LocFunId" : "CLT0004218","SAHQualCode" : "CA" }] 检查发现它是正确的然后创建一个字典 NSDictionary*dictData=@{@"MbrId":[USER_DEFAULTS valueForKey:@"MemberId"],@"StrFilter":[NSString stringWithFormat:@"%@",filterString] ,@"shiftCrtlNos":shftCntrlNmbrs}; NSMutableArray *finalArray = [[NSMutableArray alloc]init]; [finalArray addObject:dictData]; NSString *finalString =[self ConvertArrayToJsonData:finalArray];finalString = [finalString stringByReplacingOccurrencesOfString:@"\n" withString:@""]; finalString = [finalString stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];在创建最终字符串后,它正在为 JSON 转换生成符号 \ 我的代码是 -(NSString *)ConvertArrayToJsonData:(NSMutableArray *)array{ NSError error; NSData jsonData = [NSJSONSerialization dataWithJSONObject:array options:NSJSONWritingPrettyPrinted error:&error]; NSString *JSONString; if (!jsonData) { NSLog(@"error :%@",error); } else {JSONString = [[NSString alloc] initWithBytes:[jsonData bytes] length:[jsonData length] encoding:NSUTF8StringEncoding]; // NSLog(@"jsonstring:%@",JSONString); } 返回 JSON 字符串; } //我需要 JSON 像 [ { "StrFilter" : "[ { \"SAHExpertCode\" : \"\", \"ShiftType\" : \"PM\", \"LocFunId\" : \"CLT0004218\", \"SAHQualCode\" : \"CA\" }]", "MbrId" : "MBR0000035", "shiftCrtlNos" : "0080013526,0080014697" }] 还告诉我如何从字符串中删除 \

【问题讨论】:

  • 您能否发布一些代码如何生成请求和 JSON,以便我们为您提供帮助?
  • 告诉我你想如何制作 JSON(Json 格式)。给一个样品。
  • 问题文本被弄乱了抱歉
  • 最好弄清楚如何解决这个问题。
  • @gnasher729 感谢您的建议先生,我通过执行 finalString = [finalString stringByReplacingOccurrencesOfString:@"\\" withString:@""]; 找到了解决方案;

标签: ios objective-c json nsarray nsdictionary


【解决方案1】:

我通过做替换了不需要的 \ 符号 finalString = [finalString stringByReplacingOccurrencesOfString:@"\" withString:@""];在 JSON 字符串中。

【讨论】:

  • 如果实际需要反斜杠,那将是一团糟。
【解决方案2】:

我建议你去 www.json.org 查看 JSON 数据的正确格式。获得正确格式的 JSON 的最简单方法是创建一个要转换为 JSON 的数组或字典,然后使用 NSJSONSerialization 来完成这项工作。

【讨论】:

    【解决方案3】:

    只需使用iOS默认的NSJSONSerialization方法

    在下面的示例中,我有一个“postMenuArray”,我将其转换为 JSON。

    NSData * postMenuSerial = [NSJSONSerialization dataWithJSONObject:postMenuArray options:0 error:nil];
    
    NSString *Menujson = [[NSString alloc] initWithBytes:[postMenuSerial bytes] length:[postMenuSerial length] encoding:NSUTF8StringEncoding];
    

    这里我得到了 JSON 响应

    Menujson = [Menujson stringByReplacingOccurrencesOfString:@" "withString:@""];
    

    最后我删除了所有的间距。

    仍然面临问题试试这个

    Menujson = [Menujson stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    

    【讨论】:

      猜你喜欢
      • 2013-03-09
      • 2020-11-11
      • 2017-07-18
      • 1970-01-01
      • 1970-01-01
      • 2015-07-06
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多