Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 将NSData对象转换为NSDictionary的问题_Json_Swift_Nsdata - Fatal编程技术网

Json 将NSData对象转换为NSDictionary的问题

Json 将NSData对象转换为NSDictionary的问题,json,swift,nsdata,Json,Swift,Nsdata,我试图从JSON文件中提取信息。JSON输出是否可能有问题?似乎有一些奇怪的编码。它来自一个博客 JSON: 我成功创建了NSData对象,但是NSJSONSerialization失败,请参见代码: func parseJSON(jsonString: String) -> [String: AnyObject]? { guard let data: NSData = jsonString.dataUsingEncoding(NSUTF8StringEncoding)

我试图从JSON文件中提取信息。JSON输出是否可能有问题?似乎有一些奇怪的编码。它来自一个博客

JSON

我成功创建了
NSData
对象,但是
NSJSONSerialization
失败,请参见代码:

func parseJSON(jsonString: String) -> [String: AnyObject]? {
    guard let data: NSData = jsonString.dataUsingEncoding(NSUTF8StringEncoding)
        else { return nil }

    do {
        let dictionary = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String: AnyObject]
        return dictionary

    } catch {
        print("JSON Error: \(error)")
        return nil
    }
}

谢谢

您的代码工作正常问题是您的JSON文件,请尝试使用另一个JSON文件,例如,以下文件:

var json = "{\"xyz \":[{\"title\": \"\",\"subtitle\": \"\",\"summary\": \"\"}]}"

func parseJSON(jsonString: String) -> [String: AnyObject]? {

   guard let data: NSData = jsonString.dataUsingEncoding(NSUTF8StringEncoding)
       else { return nil }

   do {
       let dictionary = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String: AnyObject]
       return dictionary

   } catch {
       print("JSON Error: \(error)")
       return nil
   }
}
输出为:

Optional(["xyz": (
    {
    subtitle = "";
    summary = "";
    title = "";
}
)])
您缺少了JSON字典的键,如果为此,我在JSON的开头添加了一些键以使其正常工作。尽管如此,我强烈建议您使用一种非常好的方式解析JSON文件

删除HTML字符串

扩展字符串{
/**
去除传递字符串的HTML标记。
-参数代码:用于剥离HTML的字符串。
-返回:不带HTML标记的新字符串。
*/
func stripHtmlTags()->字符串{
返回self.stringByReplacingOccurrencesOfString(“]+>”,带字符串:“”,选项:。RegularExpressionSearch,范围:nil)
}
}

我希望这能对你有所帮助。

Victor,谢谢你的回复,但我仍在努力解决这个问题。正如您所建议的,JSON确实存在问题。不过,我对这个问题有了更好的认识。我正在从MS SQL数据库中提取博客文章。这些帖子是HTML编码的。当我创建NSData对象时,html被转换为UTF8,其中的字符在我尝试访问该键中的值时会导致错误。在创建NSData对象之前,您知道如何删除HTML吗?谢谢@MartinMuldoon我很久以前也遇到过同样的问题,我用正则表达式删除了HTML字符串。查看我的更新答案在顶层,您的JSON似乎是一个NSArray,只有一项是字典。。。
Optional(["xyz": (
    {
    subtitle = "";
    summary = "";
    title = "";
}
)])
extension String {

   /**
   Strip the HTML tags for the string passed.

   - parameter code: String to strip HTML.

   - returns: The new string without HTML tags.
   */
   func stripHtmlTags() -> String {
       return self.stringByReplacingOccurrencesOfString("<[^>]+>", withString: "", options: .RegularExpressionSearch, range: nil)
   }
}