使用 SwiftyJson 将字符串转换为 JSONArray 崩溃
Converting String to JSONArray with SwiftyJson crashes
我已经在寻找其他解决方案,但 none 会起作用,所以这里是:
我想将此 STRING VALUE 转换为 JSONObject 或 JSONArray:
[["demo": "Default", "tint": "ff00fd", "icon": "http://someurl.com/icon.jpg", "language": "en-US", "endpoint": "http://pres.artifutions.com/traveldemoapp/", "title": "Travel Demo"], ["demo": "Demo 2", "tint": "ff99fd", "icon": "http://someurl.com/icon.jpg", "language": "en-US", "endpoint": "http://pres.artifutions.com/traveldemoapp/", "title": "Second Demo"], ["demo": "Demo 3", "tint": "ff99fd", "icon": "http://someurl.com/icon.jpg", "language": "en-US", "endpoint": "http://pres.artifutions.com/traveldemoapp/", "title": "Third Demo"], ["demo": "Demo 4", "tint": "ff99fd", "icon": "http://someurl.com/icon.jpg", "language": "en-US", "endpoint": "http://pres.artifutions.com/traveldemoapp/", "title": "Fourth Demo"], ["title": "zz", "tint": "ff00fd", "icon": "(default)", "language": "nld-NLD", "endpoint": "http://pres.artifutions.com/traveldemoapp/", "demo": "z"], ["demo": "Add Demo..."]]
当我尝试将该字符串转换为 JSON 对象时,使用此代码,它崩溃了:
let jConfigs = JSON(myString).array
print("=======json")
print(jConfigs![0])
问题是什么?将其转换为 Dictionary<String,String>
对我来说也很好用。
更新:
接受的答案有效,我使用 replace() 来清理输入字符串。
另外,我做了一个额外的步骤来完成将 String 转换为 JSON 数组。请注意,在我的例子中,我无法控制字符串的来源,它是原样。
var ss=InputString.replace("], [",withString: "}, {")
ss=ss.replace("[[",withString: "[{")
ss=ss.replace("]]",withString: "}]")
if let data = ss.dataUsingEncoding(NSUTF8StringEncoding){
do{
if let array = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers) as? [AnyObject] {
print(array)
}
}
}
您提供的 json 格式无效。
更正一个(对象的大括号):
[{"demo": "Default", "tint": "ff00fd", "icon": "http://someurl.com/icon.jpg", "language": "en-US", "endpoint": "http://pres.artifutions.com/traveldemoapp/", "title": "Travel Demo"}, {"demo": "Demo 2", "tint": "ff99fd", "icon": "http://someurl.com/icon.jpg", "language": "en-US", "endpoint": "http://pres.artifutions.com/traveldemoapp/", "title": "Second Demo"}]
我已经在寻找其他解决方案,但 none 会起作用,所以这里是: 我想将此 STRING VALUE 转换为 JSONObject 或 JSONArray:
[["demo": "Default", "tint": "ff00fd", "icon": "http://someurl.com/icon.jpg", "language": "en-US", "endpoint": "http://pres.artifutions.com/traveldemoapp/", "title": "Travel Demo"], ["demo": "Demo 2", "tint": "ff99fd", "icon": "http://someurl.com/icon.jpg", "language": "en-US", "endpoint": "http://pres.artifutions.com/traveldemoapp/", "title": "Second Demo"], ["demo": "Demo 3", "tint": "ff99fd", "icon": "http://someurl.com/icon.jpg", "language": "en-US", "endpoint": "http://pres.artifutions.com/traveldemoapp/", "title": "Third Demo"], ["demo": "Demo 4", "tint": "ff99fd", "icon": "http://someurl.com/icon.jpg", "language": "en-US", "endpoint": "http://pres.artifutions.com/traveldemoapp/", "title": "Fourth Demo"], ["title": "zz", "tint": "ff00fd", "icon": "(default)", "language": "nld-NLD", "endpoint": "http://pres.artifutions.com/traveldemoapp/", "demo": "z"], ["demo": "Add Demo..."]]
当我尝试将该字符串转换为 JSON 对象时,使用此代码,它崩溃了:
let jConfigs = JSON(myString).array
print("=======json")
print(jConfigs![0])
问题是什么?将其转换为 Dictionary<String,String>
对我来说也很好用。
更新: 接受的答案有效,我使用 replace() 来清理输入字符串。 另外,我做了一个额外的步骤来完成将 String 转换为 JSON 数组。请注意,在我的例子中,我无法控制字符串的来源,它是原样。
var ss=InputString.replace("], [",withString: "}, {")
ss=ss.replace("[[",withString: "[{")
ss=ss.replace("]]",withString: "}]")
if let data = ss.dataUsingEncoding(NSUTF8StringEncoding){
do{
if let array = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers) as? [AnyObject] {
print(array)
}
}
}
您提供的 json 格式无效。
更正一个(对象的大括号):
[{"demo": "Default", "tint": "ff00fd", "icon": "http://someurl.com/icon.jpg", "language": "en-US", "endpoint": "http://pres.artifutions.com/traveldemoapp/", "title": "Travel Demo"}, {"demo": "Demo 2", "tint": "ff99fd", "icon": "http://someurl.com/icon.jpg", "language": "en-US", "endpoint": "http://pres.artifutions.com/traveldemoapp/", "title": "Second Demo"}]