如何将字符串转换为 JSON,以便我可以将其解析为对象

Posted

技术标签:

【中文标题】如何将字符串转换为 JSON,以便我可以将其解析为对象【英文标题】:How to convert String to JSON so I can parse it into objects 【发布时间】:2016-10-06 23:20:58 【问题描述】:

我有一个看起来像 JSON 的字符串,我需要把它变成对象。字符串是

["name":"Samuro","title":"The Blademaster","role":"name":"Assassin","slug":"assassin","type":"name":"Melee","slug":"melee","stats":"damage":0,"utility":0,"survivability":0,"complexity":0,"slug":"samuro","franchise":"warcraft","analyticsName":"Samuro","trait":,"skins":[],"abilities":[],"heroicAbilities":[],"revealed":true,"inFreeHeroRotation":false,"freeRotationMinLevel":0,"name":"Zarya","title":"Defender of Russia","role":"name":"Warrior","slug":"warrior","type":"name":"Ranged","slug":"ranged","stats":"damage":0,"utility":0,"survivability":0,"complexity":0,"slug":"zarya","franchise":"overwatch","analyticsName":"Zarya","trait":,"skins":[],"abilities":[],"heroicAbilities":[],"revealed":true,"inFreeHeroRotation":false,"freeRotationMinLevel":0]

当我将字符串放入像 https://jsonformatter.curiousconcept.com 那样的 json 格式化程序中时,它会完美地格式化,就像它已经是 json 格式一样。但是当我尝试时

for element in jsonString 
            let jsonHero = JsonHero(fromDictionary: element as! [String: AnyObject])
            testingArray.append(jsonHero)   
        

并将其视为我将从中获得的 json 数据

json = try NSJSONSerialization.JSONObjectWithData(responseData, options: NSJSONReadingOptions.AllowFragments) as! [[String: AnyObject]]

它显然不起作用,因为字符串没有元素。

我尝试使用扩展将我的字符串转换为 json,但没有奏效。我是编程新手,所以我不知道扩展是坏的还是那不是我需要做的。

如何让我的字符串像 json 数据一样工作(如果这就是它的名称),以便我可以将它放入对象中?

【问题讨论】:

只需将String 转换为NSData,然后使用``NSJSONSerialization` 来获取字典数组。 @rmaddy 如果你发布我解决的部分,我可以给你信用。谢谢! 不要使用解决方案更新您的问题,而是将其作为答案发布。发布您自己的答案很好。 【参考方案1】:

将字符串转换为 NSData

let responseData: NSData = jsonString.dataUsingEncoding(NSUTF8StringEncoding)!

NS 序列化

var dummyJson: [[String: AnyObject]]!
        do 
            dummyJson = try NSJSONSerialization.JSONObjectWithData(responseData, options: NSJSONReadingOptions.AllowFragments) as! [[String: AnyObject]]
        
        catch 
            //handle error
        

【讨论】:

以上是关于如何将字符串转换为 JSON,以便我可以将其解析为对象的主要内容,如果未能解决你的问题,请参考以下文章

如何将复杂(嵌套)对象解析为 JSON 并在 Flutter 中使用 HTTP 将其发送到服务器?

将表示 UCHAR 数组的 json 字符串响应转换为字节数组

如何在 Kotlin 中解析 JSON?

查找 JSON 对象大小而不将其解析为字符串

React:如何将 JSON 对象转换为数组并渲染它?

下面的 JSON 如何转换为 C# 类? [复制]