在 Swift 中调用 JSONSerialization 时获取无效的 json

弗劳

我正在尝试访问URL并解析 JSON 输出。utf8编码中打印 JSON代码:

let urlString:String = "https://developer.nrel.gov/api/.../"
    let pvURL = URL(string: urlString)
    let dataTask = URLSession.shared.dataTask(with:pvURL!) { (data, response, error) in
        do {
            let json = try JSONSerialization.jsonObject(with: data!)
            print(String(data: data!, encoding: .utf8)!)

        }catch let err {
            print("error: \(err.localizedDescription)")
        }
    }
    dataTask.resume()

打印以下输出。我在失败的在线 JSON 解析器中尝试了这个 JSON。在第一行本身给出错误。

{"inputs":{"lat":"29.93","lon":"-95.61","system_capacity":"30.30","azimuth":"180","tilt":"40","array_type":"1","module_type":"1","losses":"10"},"errors":[],"warnings":[],"version":"1.0.1","ssc_info":{"version":45,"build":"Linux 64 bit GNU/C++ Jul  7 2015 14:24:09"},"station_info":{"lat":29.93000030517578,"lon":-95.62000274658203,"elev":41.0,"tz":-6.0,"location":"None","city":"","state":"Texas","solar_resource_file":"W9562N2993.csv","distance":964},"outputs":{"ac_monthly":[3480.57373046875,3440.078369140625,3992.6513671875,3977.071533203125,4074.91357421875,3701.75,3897.655517578125,4248.00390625,4023.283447265625,4157.29931640625,3605.156005859375,3342.12890625],"poa_monthly":[139.791015625,140.18896484375,164.8218536376953,164.47149658203125,173.2971649169922,159.90576171875,169.84793090820312,186.20114135742188,173.14492797851562,176.2291717529297,148.28318786621094,136.62326049804688],"solrad_monthly":[4.509387493133545,5.006748676300049,5.316833972930908,5.4823832511901855,5.590230941772461,5.3301920890808105,5.4789652824401855,6.00648832321167,5.77149772644043,5.684812068939209,4.94277286529541,4.407201766967773],"dc_monthly":[3644.867919921875,3606.52001953125,4179.85107421875,4158.3193359375,4252.9140625,3865.03369140625,4069.092041015625,4432.62744140625,4198.369140625,4336.99609375,3767.055419921875,3490.091064453125],"ac_annual":45940.55859375,"solrad_annual":5.293959140777588,"capacity_factor":17.308107376098633}}`

而如果我urlString在浏览器中访问会给出有效的 json:

{
"inputs": {
"lat": "29.93",
"lon": "-95.61",
"system_capacity": "30.30",
"azimuth": "180",
"tilt": "40",
"array_type": "1",
"module_type": "1",
"losses": "10"
},
"errors": [],
"warnings": [],
"version": "1.0.1",
"ssc_info": {
"version": 45,
"build": "Linux 64 bit GNU/C++ Jul  7 2015 14:24:09"
},
"station_info": {
"lat": 29.93000030517578,
"lon": -95.62000274658203,
"elev": 41,
"tz": -6,
"location": "None",
"city": "",
"state": "Texas",
"solar_resource_file": "W9562N2993.csv",
"distance": 964
},
"outputs": {
"ac_monthly": [
3480.57373046875,
3440.078369140625,
3992.6513671875,
3977.071533203125,
4074.91357421875,
3701.75,
3897.655517578125,
4248.00390625,
4023.283447265625,
4157.29931640625,
3605.156005859375,
3342.12890625
],
...
}
纳塔拉然

在您的代码中,您将 JSON 数据转换为 JSON 对象(数组、字典)。

但是在浏览器中,JSON 数据打印为字符串而不是 JSON 对象(数组、字典)。

因此,如果您还想在代码中打印 JSON 字符串,则可以按如下方式打印。

let string = String(data: self, encoding: .utf8)
print("JSON String:\(String(describing: string))")

希望能帮助到你。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JSON 文本未以 JSONSerialization Swift 中的数组错误开头

来自分类Dev

在特定 Json 响应的 JsonSerialization 中如何转换 JSON 响应

来自分类Dev

Swift:JSONSerialization.jsonObject 不适用于将 json 转换为 json

来自分类Dev

URLSession和JSONSerialization Swift 3

来自分类Dev

JSONSerialization 中的选项 []

来自分类Dev

在Swift中调用api时无法加载JSON

来自分类Dev

在Swift中获取JSON

来自分类Dev

Swift JSONSerialization作为Int代替Double

来自分类Dev

在Swift中从API调用解析JSON时出现错误Domain = NSCocoaErrorDomain代码= 4865

来自分类Dev

线程 1:JSONSerialization 中的信号 SIGABRT

来自分类Dev

获取“消息中的WS Security Header无效”。调用ACAGetTransmitterBulkRequestStatus时

来自分类Dev

在Swift扩展中,获取实际的调用对象?

来自分类Dev

在Swift中从JSON数组获取值

来自分类Dev

从JSON响应中获取价值Swift

来自分类Dev

在Swift中从JSON数组获取值

来自分类Dev

在Swift中从JSON文件获取价值

来自分类Dev

在 Swift 中获取特定的 json 数据

来自分类Dev

Swift 4 从 JSON 中获取相关数据

来自分类Dev

如何在 json Swift 中获取价值

来自分类Dev

Swift:从 JSON 编码的数据中获取数组

来自分类Dev

在获取 JSON 值时发出 SWIFT Alamofire

来自分类Dev

在Swift中解析JSON时为nil

来自分类Dev

在 Swift 3 中解析 JSON 时出错

来自分类Dev

Swift中JSON写入中的无效顶级类型

来自分类Dev

Swift Vapor框架在JSON函数调用中的区别

来自分类Dev

无法从 api 调用中获取 Json 数据

来自分类Dev

从MVC AJAX调用获取“无效的JSON原语”错误

来自分类Dev

从 JSON Swift 获取数据

来自分类Dev

解析无效的JSON Swift 5

Related 相关文章

热门标签

归档