无法将此 JSON 转换为字符串

Unable to convert this JSON to a string

 Please see below the json output

 {
     "queryLogs" : [
     {
       "status" : "false",
      "query" : {
        "contents" : {
          "updated" : "",
          "id" : 1488199579,
          "created" : "",
          "patient_count" : 60,
          "isactive" : "1",
          "status_id" : 0,
          "starttime" : "",
          "queue_status_id" : 0,
          "date_consult" : ""
        },
        "conditions" : "{}"
      },
      "tableName" : "consultation",
      "type" : "I",
      "logId" : {
        "id" : "261489537666",
        "doctorId" : "100"
       }
      }
     ]
    }

需要将上面的json转换成下面的格式

 {"queryLogs":[{ "logId":{"id":"76148951287","doctorId":"100"},
    "tableName":"queue", "type":"I", "query":"{ \"contents\":{  
    \"patient_name\":\"queryLog Test\", \"status_id\":1, 
    \"queue_no\":\"6\",       \"isactive\":1, \"id\":\"148956612\", 
    \"mobile\":\"9567969610\",       \"updated\":\"2017-03-15 11:31:26 
    GMT+05:30\", \"created\":\"2017-03-15      11:31:26 GMT+05:30\", 
    \"consultation_id\":\"1495085636\"},     \"conditions\":{} 
    }","status":"false"}]}

第一个代码是我转换 JSON 时得到的,但是我怎样才能像第二个代码那样得到 JSON。 我使用下面的代码来获得第一个输出。

  var f = ["queryLogs":[["status":"false","tableName":"consultation","type":"I","logId":ids,"query":logfile]]] as [String : Any]
 let JSON = try? JSONSerialization.data(withJSONObject: f,     
    options:.prettyPrinted)
        if let content = String(data: JSON!, encoding: 
    String.Encoding.utf8) {

           print(content)
    }

试一次,

  let data  = try? JSONSerialization.data(withJSONObject: dic, options: JSONSerialization.WritingOptions(rawValue: 0))

    if let content = String(data: data!, encoding:
        String.Encoding.utf8) {

        print(content)
    }

如果你想要这样的回应,那么你还需要为你的 logfile 字典制作 JSON 字符串。

你可以做一个extensionDictionary,这样就不需要在每个地方都写JSONSerialization的相同代码了。

extension Dictionary where Key: ExpressibleByStringLiteral {
    var jsonString: String? {
        guard let data = try? JSONSerialization.data(withJSONObject: self),
            let string = String(data: data, encoding: .utf8) else {
                return nil
        }
        return string
    }
}

现在使用此扩展程序从您的词典中获取 JSON 字符串。

let id‌​s = ["id" : "261489537666", "doctorId" : "100"]
let  logfile =   [
        "contents" : [
            "updated" : "",
            "id" : 1488199579,
            "created" : "",
            "patient_count" : 60,
            "isactive" : "1",
            "status_id" : 0,
            "starttime" : "",
            "queue_status_id" : 0,
            "date_consult" : ""
        ],
        "conditions" : "{}"
] as [String : Any]

if let queryLogString = logfile.jsonString {
    let f = ["queryLogs":[["status":"false","tableName":"consultation","‌​type":"I","logId": id‌​s,"query":queryLogString]]] as [String : Any]
    if let content = f.jsonString {
        print(content)

    }
}

输出:

{"queryLogs":[{"status":"false","query":"{\"contents\":{\"updated\":\"\",\"id\":1488199579,\"created\":\"\",\"patient_count\":60,\"isactive\":\"1\",\"status_id\":0,\"starttime\":\"\",\"queue_status_id\":0,\"date_consult\":\"\"},\"conditions\":\"{}\"}","tableName":"consultation","‌​type":"I","logId":{"id":"261489537666","doctorId":"100"}}]}