Swifty-JSON:无法解析下划线

Posted

技术标签:

【中文标题】Swifty-JSON:无法解析下划线【英文标题】:Swifty-JSON: unable to parse underscore 【发布时间】:2020-01-02 11:53:45 【问题描述】:

有一个 json 文件,其 ____ 的值类似于 "question": "11 ____________" Swifty-json 无法解析并抛出错误The data couldn’t be read because it isn’t in the correct format.有没有办法处理这种情况?

JSON 响应 -

"typingQuestionArray": [
          
            "head": "Type the number name for the following number.",
            "question": "11 ____________",
            "imageLink": "",
            "correctAnswer": "eleven"
          
]

代码片段 -

if let path = getPath(name: chapterString)
    do 
           let data = try Data(contentsOf: path, options: .alwaysMapped)
           let json = try JSON(data: data)
           print(json)

         catch let error 
            print("parse error: \(error.localizedDescription)")
        
         else 
            print("Invalid filename/path.")
    

注意 - 不要怀疑 JSON 格式和 swift 代码。唯一的问题是 JSON 格式的 _____

json 验证的屏幕截图 -

【问题讨论】:

显示代码并完成json @Sh_Khan 代码已更新。完整的 json 很大,这里不能粘贴,但我已经在 J​​SON Viewer 上验证过了。请检查 json 环绕 ??同时删除, options: .alwaysMapped @Sh_Khan Json 有效。我只粘贴了一小块 json 并且已经使用了 .总是映射 由于您知道确切的位置 (2396),您可以轻松找出导致错误的字符。 【参考方案1】:

我了解您正在使用 Swifty-JSON,但如果您不急于使其工作,看起来JSONDecoder 可以完成工作:

let data = """

    "head": "Type the number name for the following number.",
    "question": "11 ____________",
    "imageLink": "",
    "correctAnswer": "eleven"

""".data(using: .utf8)!

你没有发布你的结构,但我猜它看起来像这样:

struct Question: Codable 
    let head: String
    let question: String
    let imageLink: String
    let correctAnswer: String

解码:

let question = try! JSONDecoder().decode(Question.self, from: data)

然后可以打印问题:

print (question)
// Output:
///Question(head: "Type the number name for the following number.", question: "11 ____________", imageLink: "", correctAnswer: "eleven")

如果您对JSONDecoder 的解决方案不感兴趣,请告诉我,我很乐意删除此答案。

【讨论】:

【参考方案2】:

已通过将 Tab 替换为 Whitespace 解决了此问题。

【讨论】:

以上是关于Swifty-JSON:无法解析下划线的主要内容,如果未能解决你的问题,请参考以下文章

无法解析命名空间成员“线程”

迁移到 Androidx 后无法解析符号 R

Intellij IDEA 无法使用 Play 框架解析符号

无法解决打字? [复制]

Nginx无法获取带下划线的请求头数据问题

nslookup 报告“无法解析 '(null)':名称无法解析”,尽管它成功解析了 DNS 名称