У меня вопрос.
Как читать данные JSON и отображать их UILabel? Ошибка говорит
«Текст JSON не начинался с массива или объекта, и опция, позволяющая не устанавливать фрагменты»
У меня есть этот код PHP, который извлекает данные JSON, как показано ниже:
{"login":"ID0001"}
test.php
<?php
$connect = mysqli_connect("","","","");
global $connect;
if(isset($_POST['login'])) {
$login = $_POST['login'];
$sql = "SELECT * FROM table WHERE login='$login'";
$result = mysqli_query($connect, $sql);
if($result && mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_array($result)){
$login_db = $row['login'];
$output = array ('login'=>$login_db);
}
print (json_encode($output));
mysqli_free_result($result);
}
else {
echo "No data found!";
echo mysqli_error($connect);
}
}
else {
echo "No input";
}
?>
Но в коде x я не могу напечатать данные JSON и не могу отобразить их на UILabel _loginLbl. Может ли кто-нибудь помочь мне в этом вопросе?
ViewController.swift
import UIKit
class ViewController: UIViewController {
@IBOutlet var _login: UITextField!
@IBOutlet var _loginLbl: UILabel!
@IBOutlet var sendButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func sendData(_ sender: Any) {
let login = _login.text
if(login == "") {
print("No value entered")
return
}
let postString = "login=\(login)"print("JSON value =\(postString)")
let url = URL(string: "http://localhost/get.php")
var request = URLRequest(url: url!)
request.httpMethod = "POST"request.httpBody = postString.data(using: String.Encoding.utf8)
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
guard let data = data else {
self._loginLbl.text = "Error data"print("Error result =\(error)")
return
}
do {
print("Value here")
if let json = try JSONSerialization.jsonObject(with: data) as? [String: String] {
DispatchQueue.main.async {
let loginvalue = json["login"]
self._loginLbl.text = loginvalue;
print(json)
}
}
}
catch let parseError
{
print("Catch error: \(parseError)")
self._loginLbl.text = "Catch error";
let responseString = String(data: data, encoding: .utf8)
print("response :\(responseString)")
}
}
task.resume()
}
}
Благодарю.
Задача ещё не решена.
Других решений пока нет …