Php 变量不可用JSON解析器数据(DataTask)
我试图通过字典数组向服务器发送JSON数据,并检索JSON字符串简单字符串响应。 下面是一个代码:Php 变量不可用JSON解析器数据(DataTask),php,ios,json,swift,Php,Ios,Json,Swift,我试图通过字典数组向服务器发送JSON数据,并检索JSON字符串简单字符串响应。 下面是一个代码: do { let serializedData = try JSONSerialization.data(withJSONObject: OrderList, options: JSONSerialization.WritingOptions.prettyPrinted) print(String(data: serializedData, encoding: S
do
{
let serializedData = try JSONSerialization.data(withJSONObject: OrderList, options: JSONSerialization.WritingOptions.prettyPrinted)
print(String(data: serializedData, encoding: String.Encoding.utf8))
request.httpBody = serializedData
//print(request.httpBody as Any)
}
catch
{
}
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: {data, response,error -> Void in
print("Request : \(response)")
let res = response as! HTTPURLResponse
print("Status Code : \(res.statusCode)")
let strResponse = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
print("Response String :\(strResponse)")
})
dataTask.resume()
服务器端代码是Php:
$JSON_Received = $_POST["user_contacts"];
$obj_data = json_decode($JSON_Received, true);
$user_id=$data_array['user_id'];
$user_friend_list=$data_array['friend_list'];
我有两个问题我不明白
1因为api希望接收JSON数据,所以当我打印SerialzedData以检查它是否是正确的JSON时:它打印如下内容:
Optional("{\n \"user_contacts\" : [\n {\n \"friend_list\" : \"+928885555512\",\n \"user_id\" : \"+9255\"\n },\n {\n \"friend_list\" : \"+925555648583\",\n \"user_id\" : \"+9255\"\n },\n {\n \"friend_list\" : \"+925555228243\",\n \"user_id\" : \"+9255\"\n },\n {\n \"friend_list\" : \"+925554787672\",\n \"user_id\" : \"+9255\"\n },\n {\n \"friend_list\" : \"+925556106679\",\n \"user_id\" : \"+9255\"\n },\n {\n \"friend_list\" : \"+925557664823\",\n \"user_id\" : \"+9255\"\n }\n ]\n}")
我发送的JSON是否正确?当我检查在线解析器时,它无法转换正确的json。那么如何发送正确的JSON呢
2当我在调试器中打印datatask时,它显示变量不可用
所以请帮我解决这个问题:提前谢谢 你好@catalyst我想你应该把request.httpBody=serializedData!因为它在打印中显示为可选。其次,请查看打印值,我认为您发送了正确的json数据。谢谢!我又加了一句!但编译器强迫我删除它。在调用将数据发送到服务器的方法之前,我已经打印了正确的数据。但在这里我不知道为什么它会得到\n和类似的东西通常是:serializedData不具有漂亮的打印效果。它是无用的,并且添加垃圾。请尝试JSONSerialization.datawithJSONObject:OrderList,选项:[]。