将字典数组转换为 JSON 格式
Posted
技术标签:
【中文标题】将字典数组转换为 JSON 格式【英文标题】:Convert array of dictionaries to JSON Format 【发布时间】:2017-05-04 07:20:26 【问题描述】:我的 api 期望接收以下格式的 JSON 数据
"user_contacts" : [
"friend_list" : "+928885555512",
"user_id" : "1"
,
"friend_list" : "+925555648583",
"user_id" : "1"
,
"friend_list" : "+925555228243",
"user_id" : "1"
]
我已经通过字典数组创建了这些数据,它工作正常,它存储在Data
类型变量中。由于 alamofire 需要 [String: Any]
类型的参数,所以我必须将该数据转换为所需的格式,所以我尝试了这个:
let my_dict = try JSONSerialization.jsonObject(with: jsonData!, options: []) as! [String: Any]
但是在调用 alamofire 之前打印此 my_dict
。似乎它不是一个正确的 json,见下文......类似这样的东西:__NSArrayI 0x618000271dc0>
["user_contacts": <__NSArrayI 0x618000271dc0>(
"friend_list" = "+928885555512";
"user_id" = "1";
,
"friend_list" = "+925555228243";
"user_id" = "1";
,
"friend_list" = "+925554787672";
"user_id" = "1";
)
]
那么我怎样才能制作这个正确的 json 格式呢? 我做错了什么?
更新:
let updated_User_No :[String:Any]=["friend_list": self.new_convert_telephone_no,"user_id": user_no];
user_outer_arrary.append(updated_User_No);
user_inner_array=["user_contacts": user_outer_arrary]
应该是这样的:
"user_contacts" : [
"friend_list" : "+928885555512",
"user_id" : "1"
,
"friend_list" : "+925555648583",
"user_id" : "1"
]
【问题讨论】:
你在 Swift/ios 中有一个序列化的 JSON 对象。我认为 Alamofire 使用了不同的数据结构;-) 您需要将 ios 原生数据结构转换为 alamofire 的预期字符串数据结构:这可能对您有所帮助:***.com/questions/6368867/… 谢谢!但这并不能解决我的问题。我已经 hvae json 数据,但它是类型数据变量。有什么方法可以将 json 数据存储在 [string: any] 类型的字典中。 user_inner_array 是这个数组吗? @catalyst 检查我的答案。 【参考方案1】:如下执行JSONSerialization:
let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? Dictionary<AnyHashable, Any>
【讨论】:
【参考方案2】:试试这个:
创建结构
let users = ["" : ["user_contacts": [["friend_list":"user_id"],["friend_list3":"user_id3"]]]]
创建 Json 对象
let json = try JSONSerialization.jsonObject(with: data!, options:.prettyPrinted) as? [String : AnyObject]
【讨论】:
@KKRocls :不起作用。现在它打印: Optional([AnyHashable("user_contacts"): <__nsarrayi>(以上是关于将字典数组转换为 JSON 格式的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有可选值的情况下将字典数组快速转换为json字符串[重复]