swift 封装一个从网络获取JSON字符串数据后,转为字典类型修改value 后,将字典重新按照原始JSON字符串key的顺序返回字符串。
时间: 2024-02-27 12:52:50 浏览: 172
Swift中字典与JSON转换的方法
以下是一个封装好的方法,可以实现您所需的功能:
```swift
func updateJSONData(_ jsonData: Data, updateValue: Any, forKey key: String) -> String? {
do {
// 将JSON数据解析为字典类型
let jsonObject = try JSONSerialization.jsonObject(with: jsonData, options: [])
guard var jsonDict = jsonObject as? [String: Any] else {
return nil
}
// 修改指定key对应的value
jsonDict[key] = updateValue
// 将字典重新转换为JSON字符串
let sortedDict = jsonDict.sorted { $0.0 < $1.0 }
let jsonData = try JSONSerialization.data(withJSONObject: sortedDict, options: [.sortedKeys])
let jsonString = String(data: jsonData, encoding: .utf8)
return jsonString
} catch {
print("JSON解析失败: \(error.localizedDescription)")
return nil
}
}
```
使用方法:
```swift
let jsonString = "{\"name\":\"张三\",\"age\":18,\"gender\":\"男\"}"
let jsonData = jsonString.data(using: .utf8)!
let updatedValue = 20
let updatedJSONString = updateJSONData(jsonData, updateValue: updatedValue, forKey: "age")
print(updatedJSONString) // 输出: {"age":20,"gender":"男","name":"张三"}
```
注意事项:
1. 参数`jsonData`必须是符合JSON格式的字符串转换而来的`Data`类型数据;
2. 修改key对应的value时,传入的`updateValue`参数类型必须与原始JSON数据中对应key的value类型一致;
3. 返回的JSON字符串中,key的顺序与原始JSON字符串中的顺序相同。
阅读全文