gpt4 book ai didi

javascript - 获取 JSON 数据时遇到问题

转载 作者:行者123 更新时间:2023-11-30 12:33:35 25 4
gpt4 key购买 nike

我对使用 JavaScript 进行后端编程还很陌生,并且已经编写了一些代码来查询数据库并将结果作为 JSON 返回。它似乎在浏览器中正常工作,但我的 iOS 代码没有从中获取任何数据。我现在在测试时在本地运行它。如果您查看从 URL 获取数据的 Swift,我不会从 catch 中的 print 语句中获取任何 JSON。

JavaScript

'use strict';
var util = require('util');
var sql = require("mssql");
var express = require('express');
var port = process.env.PORT || 1337;

var membershipNumber;
var queryString;

var app = express();

app.get('/membership/:number', function (req, res) {
console.log("\nPARAMS:");
console.log(req.params.number);

membershipNumber = req.params.number;
queryString = util.format('SELECT major_key, company, status, paid_thru FROM name WHERE major_key = \'%s\' and member_record = 1', membershipNumber);
console.log("\nQUERY:");
console.log(queryString);

res.setHeader('Content-Type', 'application/json');
res.set('Content-Type', 'application/json');
membershipStatusQuery(queryString, res);
});

app.get('/', function (req, res) {
var dictionary = [];
dictionary.push({
key: "none"
});
var jsonDict = JSON.stringify(dictionary);

res.setHeader('Content-Type', 'application/json');
res.set('Content-Type', 'application/json');
res.send(jsonDict);
});

function membershipStatusQuery(query, response) {
var config = {
server: 'DB_Server',
database: 'testDB',
user: 'sa',
password: 'password',
port: 1433
};

var connection = new sql.Connection(config);

connection.connect().then(function () {
var req = new sql.Request(connection);
req.query(query).then(function (recordset) {
connection.close();
response.send(results);
})
.catch(function (err) {
console.log(err);
connection.close();
response.send(err);
});
})
.catch(function (err) {
console.log(err);
response.send(err);
});
}

app.listen(port, function () {
console.log("Listening on port %s", port);
});

结果

[{"major_key":"0001354648","company":"Membership of David Metzgar","status":"A","paid_thru":"2017-10-31T00:00:00.000Z"}]

iOS Swift 代码从 URL 获取 JSON 的类:

import UIKit

class GetJSON: NSObject {

func getJSONFrom(urlString: String) -> JSON {
let url = URL(string: urlString)
var data = Data()

do {
data = try Data(contentsOf: url!)
} catch {
print("No JSON")
// TODO: Display error
}

let json = JSON(data: data)
return json
}
}

另一个类使用 JSON 的方法:

func getQueryResultsJSON() {
print("http://localhost:1337/membership/\(memberNumberTextField.text!)")
// let jsonURL = "http://localhost:1337/membership/\(memberNumberTextField.text!)"
let jsonURL = "http://localhost:1337/membership/0001354648"
let getJSON = GetJSON()
self.resultsArray = getJSON.getJSONFrom(urlString: jsonURL)
if let dictionary = resultsArray?[0].dictionaryObject {
if let status = dictionary["status"] {
if status as! String == "A" {
print(dictionary)
print("Provided membership is active")
// membership is active
// TODO: save info and display membership card
} else {
print(dictionary)
print("Provided membership is NOT active")
// membership is not active
// TODO: display alert
}
} else {
print("DOESN'T EXIST!")
// membership number does not exist
// TODO: display alert
}
} else {
print("NOTHING!")
}
}

最佳答案

        let url = NSURL(string: "your url")!
let request = NSMutableURLRequest(url: url as URL)
// request.httpMethod = "POST"
// request.httpBody = jsonData
//request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")

let task = URLSession.shared.dataTask(with: request as URLRequest){ data,response,error in
if error != nil {

return
}

do {
let userObject = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String: String]
if userObject != nil {

// do something
}

} catch let jsonError {
print(jsonError)
print(String(data: data!, encoding: String.Encoding.utf8)!)
}
}

task.resume()

关于javascript - 获取 JSON 数据时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43142093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com