如何转换此。 “ {\ n ID = \” d9a7c7bf-781d-47b3-bb4e-e1022ec4ce1b \“; \ n名称=总部; \ n}”;以此格式{ “ ID”:“ d9a7c7bf-781d-47b3-bb4e-e1022ec4ce1b”, “名称”:“总部” }
if let jsonString = text as? String {
let objectData = jsonString.data(using: String.Encoding.utf8)
do {
let json = try JSONSerialization.jsonObject(with: objectData!, options: .allowFragments) as! [String:Any] //try JSONSerialization.jsonObject(with: objectData!, options: JSONSerialization.ReadingOptions.mutableContainers)
print(String(describing: json))
return json
} catch {
// Handle error
print(error)
}
}
Blockquote
答案 0 :(得分:3)
首先并且已经提到过,字符串格式显然是不是 JSON。
这是调用Foundation集合类型(description
/ NSArray
)的NSDictionary
属性时返回的字符串格式。
例如,print
语句调用description
,并且该格式也出现在Terminal.app的输出中。
但是有一个解决方案:这种字符串格式称为openStep
(一种OpenStep / NeXt
旧式格式),并且可以在PropertyListSerialization
中使用
此代码读取格式:
let string = "{\n ID = \"d9a7c7bf-781d-47b3-bb4e-e1022ec4ce1b\";\n Name = Headquarters;\n}"
let data = Data(string.utf8)
do {
let dictionary = try PropertyListSerialization.propertyList(from: data, format: nil)
print(dictionary)
} catch { print(error) }
注意:
我非常确定原始数据格式不是 not openStep,而在您的某个地方不必要地使用问题中的String(describing
初始化程序创建了字符串。
答案 1 :(得分:1)