Iphone 有什么方法可以从Xcode中的JSON响应中删除注释字符吗?

Iphone 有什么方法可以从Xcode中的JSON响应中删除注释字符吗?,iphone,json,parsing,comments,Iphone,Json,Parsing,Comments,我是JSON新手。JSON解析器中是否有从响应中删除注释字符的方法 例如//{“回应”:“成功” 它是iPhone的SBJson。 从来看,JSON语法不允许注释。这显然不能回答您的问题,但我怀疑您必须进行一些字符串操作,并将所有注释字符替换为空字符串,然后才使用JSON库对其进行解析。JSON解析器对JSON的开头非常挑剔要解析的块-它们不喜欢开始时除“{”以外的字符(至少我在TouchJSON中发现了这一点,听起来您使用SBJson的情况类似) 因此,只需使用字符串并删除开头“{”之前的所有

我是JSON新手。JSON解析器中是否有从响应中删除注释字符的方法

例如//{“回应”:“成功”

它是iPhone的SBJson。

来看,JSON语法不允许注释。这显然不能回答您的问题,但我怀疑您必须进行一些字符串操作,并将所有注释字符替换为空字符串,然后才使用JSON库对其进行解析。

JSON解析器对JSON的开头非常挑剔要解析的块-它们不喜欢开始时除“{”以外的字符(至少我在TouchJSON中发现了这一点,听起来您使用SBJson的情况类似)

因此,只需使用字符串并删除开头“{”之前的所有字符,即可解析:

NSRange startJSONRange = [myJSONString rangeOfString:@"{"];
startJSONRange.length = myJSONString.length - startJSONRange.location;
NSString *correctJSONString = [myJSONString substringWithRange:startJSONRange];

// parse correctJSONString
这会起作用,但真正的解决办法是告诉发送JSON的人不要胡说八道,发送真正的JSON。

现在,这很容易做到: 下面是获取和解析实际json的方法

// normal json no comments
func getStuff() {
  guard let url = URL(string: "http://you.com/x.json") else { return print("?") }
  
  let configuration = URLSessionConfiguration.ephemeral
  aSession = URLSession(configuration: configuration)
  
  aSession.dataTask(with: url) { [weak self] data, response, error in
    guard let _ = self else { return print("woe") }
    guard let data = data else { return print("woe") }
    do {
      let result = try JSONDecoder().decode(YourStructure.self, from: data)
      localBlah = Dictionary(uniqueKeysWithValues: result.whatever)
      
    } catch let error {
      print(error)
    }
  }.resume()
}
下面是如何获取和解析具有简单注释行的“json”:

在开发过程中,从“json”中删除#注释行: 注意解码
数据的代码行

 let result = try JSONDecoder().decode(YourStructure.self, from: data)
只需在该行之前粘贴这三行代码:

let s = String(decoding: data, as: UTF8.self)
let fixed = s.replacingOccurrences(
    of: "(?m)^#.*",
    with: "",
    options: .regularExpression)
guard let data2: Data = fixed.data(using: .utf8) else { return print("woe") }
  
let result = try JSONDecoder().decode(YourStructure.self, from: data2)
因此,在服务器上的“json”开发过程中,您可以使用以下内容:

"measures": [{
    "screen": "options",
    "topMargin": 25,
    #don 't change topmargin anyone
    "leftMargin": 12,
    #Note,
    Steve prefers 13. But everyone
    else prefers 12. "rightMargin": 20,
  },
就这么简单


关于使用正则表达式的重要注意事项: 正则表达式是一个复杂的过程。本文中使用的正则表达式示例仅表示

“删除所有以“#”开头的完整行”

因此,它只理解简单的“完整行”注释

如何编写正则表达式超出了本QA的范围


当你在
let fixed=
预先咀嚼文本时,使用任何你想要的正则表达式或其他技术。

你提到了一个JSON解析器,但没有告诉我们是哪一个。它是十年后的SBJson,这是现代Swift现在很容易做到的事情之一。十年后,幸运的是,这是现代Sw现在很容易做到的事情之一在开发过程中,服务器上通常会有带有注释的“json”。您只需添加几行代码即可在iOS中实现。