Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以将两个JSON对象从PHP发送到Swift?_Php_Json_Swift - Fatal编程技术网

是否可以将两个JSON对象从PHP发送到Swift?

是否可以将两个JSON对象从PHP发送到Swift?,php,json,swift,Php,Json,Swift,我想从PHP到我的应用程序中获得一个多个jsonObject。问题是我似乎无法将多个对象添加到我的应用程序中。下面是我想做的一个例子: PHP文件: <?php echo json_encode([$value1, $value2]); ?> 显然,我没有得到这两个变量。我试图将$value1和$value2放入一个数组中,然后将其回显到应用程序中,但显然它对我不起作用数据![0]和数据![1] 给出错误信息。谁能帮我一把吗?我从您的Swift代码推断,$value1和

我想从PHP到我的应用程序中获得一个多个jsonObject。问题是我似乎无法将多个对象添加到我的应用程序中。下面是我想做的一个例子:

PHP文件:

<?php 

   echo json_encode([$value1, $value2]);

?>

显然,我没有得到这两个变量。我试图将
$value1
$value2
放入一个数组中,然后将其回显到应用程序中,但显然它对我不起作用<代码>数据![0]和
数据![1] 
给出错误信息。谁能帮我一把吗?

我从您的Swift代码推断,
$value1
$value2
是两种不同类型的结果。对于异构对象的集合,我建议使用关联数组(即字典):

现在,考虑到你没有分享细节,我假设:

  • $value1
    是一个结构正确的
    对话数组
  • 对话本身就是可解码的
    ;及
  • $value2
    是一个结构正确的
    字符串数组

我还建议避免使用
数据,因为如果出现服务器错误,应用程序将崩溃。我建议您优雅地检测错误,例如:

let task = URLSession.shared.dataTask(with: request) { data, _, error in    
    guard let data = data, error == nil else {
        print(error ?? "Unknown error")
        return
    }

    do {
        let serverResult = try JSONDecoder().decode(ServerResult.self, from: data)
        // do something
    } catch let parseError {
        print(parseError)
    }
}
task.resume()

将其作为数组发送,例如,
echo json_encode([$value1,$value2])。您目前拥有的内容创建了一个无效的JSON字符串。“我试图将$value1和$value2放入一个数组中……但是……它不起作用”。。。让我们看看你试过什么。这是正确的基本想法。如果
value1
value2
是同一个结构,那么构建一个普通数组并
json\u encode
。如果它们有不同的结构,那么你可能想要构建一个关联数组(即字典)和
json\u encode
。事实上,我试着按照Jon在上面所展示的那样做(但我没有把
[]
),不知何故,我认为问题来自快速方面,我只是不知道如何解码对象。。我会告诉你我做了什么,我会编辑问题@Rob这正是我想要的,你的假设是100%正确的!。。。谢谢你的帮助,谢谢
<?php 

   echo json_encode(Array("result" => $value1, "chck" => $value2));

?>
struct ServerResult: Decodable {
    let result: [Conversation]
    let chck: [String]
}
let serverResult = try JSONDecoder().decode(ServerResult.self, from: data!)
let task = URLSession.shared.dataTask(with: request) { data, _, error in    
    guard let data = data, error == nil else {
        print(error ?? "Unknown error")
        return
    }

    do {
        let serverResult = try JSONDecoder().decode(ServerResult.self, from: data)
        // do something
    } catch let parseError {
        print(parseError)
    }
}
task.resume()