在 swift 中加载 JSON 结果
Load JSON result in swift
我正在尝试将从 Playframewordk 1.2 获得的 JSON 结果解析为 swift。
Playframework 结果:
public JsonObject getJson() {
JsonObject jsonObject = new JsonObject();
if (codeJson != null) {
for (String field : codeArticleFields) {
if (codeJson.has(field)) {
jsonObject.add(field, codeJson.get(field));
}
}
}
return jsonObject;
}
查看游戏框架
#{extends 'main.html' /}
#{set title:'Test' /}
#{set 'moreScripts' }
#{/set}
${product?.getJson()}
这里是swift的代码:
func connectProductDatabase() {
let urlString = "http://api.autoidlabs.ch/test/" + "4025089060857"
let url: NSURL = NSURL(string: urlString)!
var request : NSMutableURLRequest = NSMutableURLRequest()
request.URL = url
request.HTTPMethod = "GET"
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler: {
(response:NSURLResponse!, data: NSData!, error: NSError!) -> Void in
var error: NSError?
if let result = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &error)
as? NSArray {
let dataArray = result[0] as NSArray
println(dataArray)
} else {
let resultString = NSString(data: data, encoding: NSUTF8StringEncoding)
println("Flawed JSON String: \(resultString)")
}
})
println("not connected")
}
因此,我得到了包含所有 HTML 标记的整个文件。这是因为它没有进入 if 语句。 (我也试过 options:NSJSONReadingOptions.MutableContainers)
我尝试了很多从 Whosebug 中找到的结果,但遇到了同样的问题。如果我理解得很好,playframework 视图并没有真正返回 JSON,java 的 JsonObject 是一个格式化为 JSON.
的字符串
我该如何解决这个问题?
我能够解决问题。
我使用 NSDictionary
而不是 NSArray
if let result = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &error)
as? NSDictionary {
然后在 playframework 中我使用了 renderJSON 而不是 render。
我正在尝试将从 Playframewordk 1.2 获得的 JSON 结果解析为 swift。
Playframework 结果:
public JsonObject getJson() {
JsonObject jsonObject = new JsonObject();
if (codeJson != null) {
for (String field : codeArticleFields) {
if (codeJson.has(field)) {
jsonObject.add(field, codeJson.get(field));
}
}
}
return jsonObject;
}
查看游戏框架
#{extends 'main.html' /}
#{set title:'Test' /}
#{set 'moreScripts' }
#{/set}
${product?.getJson()}
这里是swift的代码:
func connectProductDatabase() {
let urlString = "http://api.autoidlabs.ch/test/" + "4025089060857"
let url: NSURL = NSURL(string: urlString)!
var request : NSMutableURLRequest = NSMutableURLRequest()
request.URL = url
request.HTTPMethod = "GET"
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler: {
(response:NSURLResponse!, data: NSData!, error: NSError!) -> Void in
var error: NSError?
if let result = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &error)
as? NSArray {
let dataArray = result[0] as NSArray
println(dataArray)
} else {
let resultString = NSString(data: data, encoding: NSUTF8StringEncoding)
println("Flawed JSON String: \(resultString)")
}
})
println("not connected")
}
因此,我得到了包含所有 HTML 标记的整个文件。这是因为它没有进入 if 语句。 (我也试过 options:NSJSONReadingOptions.MutableContainers)
我尝试了很多从 Whosebug 中找到的结果,但遇到了同样的问题。如果我理解得很好,playframework 视图并没有真正返回 JSON,java 的 JsonObject 是一个格式化为 JSON.
的字符串我该如何解决这个问题?
我能够解决问题。 我使用 NSDictionary
而不是 NSArray if let result = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &error)
as? NSDictionary {
然后在 playframework 中我使用了 renderJSON 而不是 render。