Xcode,PHP;使用SwiftyJSON master从PHP/MySQL检索数据时遇到问题

Xcode,PHP;使用SwiftyJSON master从PHP/MySQL检索数据时遇到问题,php,ios,mysql,swift,xcode,Php,Ios,Mysql,Swift,Xcode,我正在用Xcode和Swift开发一个iOS应用程序 我需要从我的应用程序中的MySQL数据库加载一些数据。我认为使用JSON这样做是合理的(或者有什么反对它的吗?) 为了使它更容易,我想使用 我在上找到了此工作代码,因此: class ViewController: UIViewController { var dict = NSDictionary() @IBOutlet weak var authorLbl: UILabel! @IBOutlet weak va

我正在用Xcode和Swift开发一个iOS应用程序

我需要从我的应用程序中的MySQL数据库加载一些数据。我认为使用JSON这样做是合理的(或者有什么反对它的吗?)

为了使它更容易,我想使用

我在上找到了此工作代码,因此:

class ViewController: UIViewController {

    var dict = NSDictionary()

    @IBOutlet weak var authorLbl: UILabel!
    @IBOutlet weak var quoteLbl: UILabel!

    override func viewDidLoad() {

        super.viewDidLoad()

        let urlString = "http://api.theysaidso.com/qod.json"

        if let url = NSURL(string: urlString) {

            if let data = try? NSData(contentsOfURL: url, options: []) {

                let json = JSON(data: data)

                print(json)

                let auther = json["contents"]["quotes"][0]["author"].stringValue

                let quote = json["contents"]["quotes"][0]["quote"].stringValue

                authorLbl.text = auther

                quoteLbl.text = quote
            }
        }
    }
}
但是当用我自己的PHP脚本尝试时,它不起作用

我认为这是因为不同的输出。我找到的SO帖子中的(工作)PHP脚本如下所示:

{“success”:{“total”:1},“contents”:{“quotes”:[{“quote”:“我把速溶咖啡放在微波炉里,几乎回到了时间。”,“length”:“70”,“author”:“Steven Wright”,“tags”:[“coffee”,“mobile”,“the times”,“time”],“category”:“mobily”,“id”:“LvFg2QsKr_FoCH_lwryQ5geF”}

使用我自己的PHP scrip输出如下:
[{“a”:“约翰·伊夫”,“b”:“库比蒂诺”,“c”:“绿色”,“d”:“苹果”},{“a”:“莎拉·琼斯”,“b”:“柏林”,“c”:“红色”,“d”:“梨”}]

语法似乎完全不同

这是我的PHP脚本/代码:

<?php
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
include "$root/config.php";

$query = "SELECT * FROM users";
$stmt = $pdo->prepare($query);
$stmt->execute();

$userData = array();

while($row=$stmt->fetch(PDO::FETCH_ASSOC)){
$userData[] = $row;
}
echo json_encode($userData);
?>

我做错了什么?我如何影响语法?还是另一个问题

附言:使用这个库是合理的还是不合理的?

更新 php文件返回正确的json格式。您可以通过以下方式访问数据:

print(json[0]["a"]) // John Eve
print(json[0]["b"]) // Cupertino
// ...
print(json[1]["a"]) // Sarah Jones
print(json[1]["c"]) // Red
分析JSON语法 为了理解前两个JSON语法之间为什么存在差异,您需要了解

我将试着非常简短地向你们解释这一点。 我知道我不擅长用英语写作,但我会尽力的

花括号 json语法中的花括号表示json对象,如:

{"a":"John Eve","b":"Cupertino","c":"Green","d":"Apple"} 
{"a":"Sarah Jones","b":"Berlin","c":"Red","d":"Pear"}
方括号 json语法中的方括号表示json对象数组,如:

[
 {"a":"John Eve","b":"Cupertino","c":"Green","d":"Apple"},
 {"a":"Sarah Jones","b":"Berlin","c":"Red","d":"Pear"}
]

因此,在theysaidso的例子中,JSON语法表示单个JSON对象,即:

上面的JSON对象内部有两个JSON对象,第一个对象是:

"success":{"total":1}
第二个代表内容:

在JSON对象的内容中,有一个名为quotes的JSON对象,它包含一个JSON对象数组:)

因此,当您希望访问该嵌套json对象的对象时,可以执行以下操作:

json["contents"]["quotes"][0]["author"].stringValue
json[0]["a"]
在上面的代码中,您说: 返回名为“author”[“author”]-的字符串类型属性,该属性位于索引为0-[“quotes”][0]的json对象中,位于内容对象-[“contents”]-在我的json对象-json-中的引号数组中


对于您的情况,您有一个json对象,它是json对象的数组:

因此,当您希望访问该嵌套JSON对象的对象时,可以执行以下操作:

json["contents"]["quotes"][0]["author"].stringValue
json[0]["a"]
在上面的代码中,您说: 返回一个名为“a”-[“a”]-的属性,该属性位于json对象数组-json-中索引为0-json[0]的json对象中


我希望你能理解我想说的话。

更新 php文件返回正确的json格式。您可以通过以下方式访问数据:

print(json[0]["a"]) // John Eve
print(json[0]["b"]) // Cupertino
// ...
print(json[1]["a"]) // Sarah Jones
print(json[1]["c"]) // Red
分析JSON语法 为了理解前两个JSON语法之间为什么存在差异,您需要了解

我将试着非常简短地向你们解释这一点。 我知道我不擅长用英语写作,但我会尽力的

花括号 json语法中的花括号表示json对象,如:

{"a":"John Eve","b":"Cupertino","c":"Green","d":"Apple"} 
{"a":"Sarah Jones","b":"Berlin","c":"Red","d":"Pear"}
方括号 json语法中的方括号表示json对象数组,如:

[
 {"a":"John Eve","b":"Cupertino","c":"Green","d":"Apple"},
 {"a":"Sarah Jones","b":"Berlin","c":"Red","d":"Pear"}
]

因此,在theysaidso的例子中,JSON语法表示单个JSON对象,即:

上面的JSON对象内部有两个JSON对象,第一个对象是:

"success":{"total":1}
第二个代表内容:

在JSON对象的内容中,有一个名为quotes的JSON对象,它包含一个JSON对象数组:)

因此,当您希望访问该嵌套json对象的对象时,可以执行以下操作:

json["contents"]["quotes"][0]["author"].stringValue
json[0]["a"]
在上面的代码中,您说: 返回名为“author”[“author”]-的字符串类型属性,该属性位于索引为0-[“quotes”][0]的json对象中,位于内容对象-[“contents”]-在我的json对象-json-中的引号数组中


对于您的情况,您有一个json对象,它是json对象的数组:

因此,当您希望访问该嵌套JSON对象的对象时,可以执行以下操作:

json["contents"]["quotes"][0]["author"].stringValue
json[0]["a"]
在上面的代码中,您说: 返回一个名为“a”-[“a”]-的属性,该属性位于json对象数组-json-中索引为0-json[0]的json对象中



我希望你能理解我的意思。

我想你误解了我的问题。我的PHP脚本在Swift中没有输出。它认为这是因为我的JSON字符串的语法与“theysaidso”的JSON字符串不同。例如,我的JSON字符串只有一对
[{}]
。“Theysaidso的”JSON字符串多次出现这个字符
{
。你明白我的意思吗?@David,我很高兴。@David我在答案中添加了更多细节。我想你误解了我的问题。我的PHP脚本在Swift中没有得到任何输出。我想这是因为我的JSON字符串的语法与“Theysaidso”不同。”JSON字符串。例如,我的JSON字符串只有一对
[{}]
“Theysaidso的”JSON字符串多次使用这个字符
{
。你明白我的意思吗?@David我很乐意。@David我在答案中添加了更多细节。