在 Swift 中创建 JSON 数组
Creating JSON Array in Swift
我的后端需要以下 JSON 正文:
[
{
"number":"561310"
},
{
"number":"132333"
},
{
"number":"561310"
}
]
当我像这样输入它时,它在 Postman 中运行得非常好:
如何使用 Swift 创建类似的 JSON?
现在我有一个 phone 数字数组,类型为 String.
let phonenumbers = [String]()
for phonenumber in phonenumbers {
print(phonenumber)
}
这将打印:
561310
132333
561310
完成后 JSON 我想将它用作 AlamoFire 的参数。
let phoneNumbersDictionary = phonenumbers.map({ ["number": [=10=]] })
但是,Alamofire.request
期望 POST 主体采用 [String: AnyObject?]
的形式,因此您不能直接将上述数组传入。您需要将其转换为 JSON 对象使用 .dataWithJSONObject(options:)
并通过 NSURLRequest
:
传递
let JSON = try? NSJSONSerialization.dataWithJSONObject(phoneNumbersDictionary, options: [])
let request = NSMutableURLRequest(URL: url)
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.HTTPMethod = "POST"
request.HTTPBody = JSON
Alamofire.request(request).responseJSON { ...
顺便说一下,dataWithJSONObject
returns NSData
类型的结果,所以如果你想打印出来,你应该把它转换成字符串:
if let JSON = JSON {
print(String(data: JSON, encoding: NSUTF8StringEncoding))
}
此外,如果您更喜欢使用内置 NSURLSession
库,请查看此 SO question。
您可以在 swift 中使用字典功能数组。
例如你可以像下面这样创建:
var phonenumbers = [[String: String]]()
let dataToAppend: [String: String] = ["number": "561310"]
phonenumbers.append(dataToAppend)
phonenumbers.append(dataToAppend)
phonenumbers.append(dataToAppend)
for phonenumber in phonenumbers {
print(phonenumber)
}
请记住,这只是您可以遵循的一种方法。虽然有很多不同的程序来制作这种东西。
在您的情况下,您可以通过 运行 遍历 phonenumbers
数组来更新键值对,并将新数据附加到您将作为 header 发送的主数组到您的后端。
谢谢。
希望对您有所帮助。
在我的场景中,我需要以这种格式发送数据
[ {"id": "123" , "value":, "this is value"},
{"id": "123" , "value":, "this is value"},
{"id": "123" , "value":, "this is value"} ]
我是这样解决的
func map() -> [[String: String]]{
var jsonArray: [[String: String]] = [[String: String]]()
//here data is arra of objets or values where your data exist, if your data is not in an array you can user object or what ever format you have like this jsonArray.append(["key": "value", "key":"value"])
for value in data {
let json = (["key1": value.someVariable, "key2": value.someOtherVariable ])
jsonArray.append(json as! [String : String])
}
print(jsonArray)
return jsonArray
}
并在 Alamofire
中使用此 map() 作为参数
我的后端需要以下 JSON 正文:
[
{
"number":"561310"
},
{
"number":"132333"
},
{
"number":"561310"
}
]
当我像这样输入它时,它在 Postman 中运行得非常好:
如何使用 Swift 创建类似的 JSON? 现在我有一个 phone 数字数组,类型为 String.
let phonenumbers = [String]()
for phonenumber in phonenumbers {
print(phonenumber)
}
这将打印: 561310 132333 561310
完成后 JSON 我想将它用作 AlamoFire 的参数。
let phoneNumbersDictionary = phonenumbers.map({ ["number": [=10=]] })
但是,Alamofire.request
期望 POST 主体采用 [String: AnyObject?]
的形式,因此您不能直接将上述数组传入。您需要将其转换为 JSON 对象使用 .dataWithJSONObject(options:)
并通过 NSURLRequest
:
let JSON = try? NSJSONSerialization.dataWithJSONObject(phoneNumbersDictionary, options: [])
let request = NSMutableURLRequest(URL: url)
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.HTTPMethod = "POST"
request.HTTPBody = JSON
Alamofire.request(request).responseJSON { ...
顺便说一下,dataWithJSONObject
returns NSData
类型的结果,所以如果你想打印出来,你应该把它转换成字符串:
if let JSON = JSON {
print(String(data: JSON, encoding: NSUTF8StringEncoding))
}
此外,如果您更喜欢使用内置 NSURLSession
库,请查看此 SO question。
您可以在 swift 中使用字典功能数组。
例如你可以像下面这样创建:
var phonenumbers = [[String: String]]()
let dataToAppend: [String: String] = ["number": "561310"]
phonenumbers.append(dataToAppend)
phonenumbers.append(dataToAppend)
phonenumbers.append(dataToAppend)
for phonenumber in phonenumbers {
print(phonenumber)
}
请记住,这只是您可以遵循的一种方法。虽然有很多不同的程序来制作这种东西。
在您的情况下,您可以通过 运行 遍历 phonenumbers
数组来更新键值对,并将新数据附加到您将作为 header 发送的主数组到您的后端。
谢谢。
希望对您有所帮助。
在我的场景中,我需要以这种格式发送数据
[ {"id": "123" , "value":, "this is value"},
{"id": "123" , "value":, "this is value"},
{"id": "123" , "value":, "this is value"} ]
我是这样解决的
func map() -> [[String: String]]{
var jsonArray: [[String: String]] = [[String: String]]()
//here data is arra of objets or values where your data exist, if your data is not in an array you can user object or what ever format you have like this jsonArray.append(["key": "value", "key":"value"])
for value in data {
let json = (["key1": value.someVariable, "key2": value.someOtherVariable ])
jsonArray.append(json as! [String : String])
}
print(jsonArray)
return jsonArray
}
并在 Alamofire
中使用此 map() 作为参数