将字典数组转换为 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-CSDN论坛

swift:将传入的 json 数组转换为字典和对象

FMDB之数组字典的存储

如何在没有可选值的情况下将字典数组快速转换为json字符串[重复]

Swift 将 JSON 转换为字典数组问题 错误代码 3840(末尾有垃圾)

iOS字典或者数组和JSON串的转换