【问题标题】:How can I get the JSON response in dictionary format in swift3?如何在 swift3 中以字典格式获取 JSON 响应?
【发布时间】:2023-04-03 09:44:01
【问题描述】:

我正在处理 JSON 序列化,如下代码:

  let jsonData: Data? = try? JSONSerialization.data(withJSONObject: abc, options: .prettyPrinted)
  let parsedDict = String(data: jsonData!, encoding: String.Encoding.utf8)
  print(" parse Dict Value \(parsedDict!)")

abc 数据为:

{
  "ActedTime" = "2017-09-19 12:04:12",
  "EventDate" = "2017-10-06 07:03:29"
} 

序列化完成后,响应值为:

"{\n  \"ActedTime\" : \"2017-09-19 12:04:12\",\n  \"EventDate\" : \"2017-10-06 07:03:29\”}”

我像下面这样打印了 parsedDict:

{
  "ActedTime" : "2017-09-19 12:04:12",
  "EventDate" : "2017-10-06 07:03:29"
} 

存储的数据看起来像字符串格式,但打印的数据像字典。

如何获取字典格式以将参数发送到另一个 API,如字典格式。

请帮帮我, 提前致谢。

【问题讨论】:

  • 我已经尝试过了,但我得到了 [String : String] 格式。但我只想要以下格式。 { "ActedTime" : "2017-09-19 12:04:12", "EventDate" : "2017-10-06 07:03:29" }
  • 这很好。只需使用DateFormatter 将您的日期字符串转换为实际日期,将格式设置为yyyy-MM-dd hh:mm:ss
  • 抱歉,我的问题是我将数据存储在字典中,格式如下:"{\n \"ActedTime\" : \"2017-09-19 12:04:12\",\n \"EventDate\" : \"2017-10-06 07:03:29\"}" 但我不想要这种格式。我只想要以下格式: { "ActedTime" : "2017-09-19 12:04:12", "EventDate" : "2017-10-06 07:03:29" } 比较两个响应。第一个似乎是字符串,第二个是字典
  • 如果我打印“parsedData”的数据,它似乎是字典格式。我将相同的 parsedData 参数传递给另一个 API,它似乎是字符串格式。字符串格式不接受我的服务,它只接受字典格式。

标签: json nsdictionary json-serialization


【解决方案1】:

省略.prettyPrinted,反正服务器不管。

let jsonData = try? JSONSerialization.data(withJSONObject: abc)

如果对象应该是字典,那你为什么要序列化它呢?

但是,如果数据应该在 POST 请求中作为 httpBody 传递,则传递 jsonData 而不是 parsedDict

【讨论】:

  • 它正在工作,但存储的数据似乎是字符串格式。我的要求只是字典格式。怎么样?
  • 我的一个 API 不接受字符串格式,它只接受 JSON 格式。
  • JSON 字符串
  • String 被转换为字典 let params = convertStringToDictionary(text: parsedDict!) 像 request.httpBody = try! JSONSerialization.data(withJSONObject: params, options: []);加载失败:由于格式不正确,无法读取数据。
  • 格式取决于contentaccepts 标头的值。
猜你喜欢
  • 2018-12-11
  • 1970-01-01
  • 2012-07-12
  • 1970-01-01
  • 2013-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-28
相关资源
最近更新 更多