当前位置: 首页 > 知识库问答 >
问题:

解析 json for geolocation iOS app

薛俊美
2023-03-14

我正在尝试为iPhone制作一个应用程序,该应用程序应该使用用节点js MongoDB编写的网络服务。该应用程序是在 Swift 中制作的,但现在我有一个问题,我没有正确管理解析数据。

目前我有这样的代码:

    var endpoint = NSURL(string: self.url + "?latitud=" + self.latitude + "&longitud=" + self.longitude)
    var data = NSData(contentsOfURL: endpoint!)

    var error: NSError? = nil

    if let json: NSDictionary = NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers, error: &error) as? NSDictionary {
        for place in json {
            var name = place["obj"]["name"]
            var coords = place["obj"]["coords"]

            var annotation = MKPointAnnotation()
            annotation.title = name as? String
            annotation.coordinate = coords as? CLLocationCoordinate2D
            map.addAnnotation(annotation)
        }

    }

不幸的是,它不起作用:(

webservice的响应类似于以下内容:

[
    {
        "dis": 1.22,
        "obj": {
            "name": "Some name",
            "coords": [
                -97.1228,
                17.4049
            ],
            "phones": [
                "555 555 55555",
                "444 444 44444"
            ],
            "address": {
                "street": "Some Street",
                "zip": "00000"
            }
        }
    },
    {
        "dis": 2.03,
        "obj": {
            "name": "Othe name",
            "coords": [
                -97.0910
                17.7099
            ],
            "phones": [
                "777 777 7777"
            ],
            "address": {
                "street": "Other street",
                "zip": "11111"
            }
        }
    }
]

这就是我做错了什么?有没有一种更优雅(也特别有效)的方式来向API发出请求?

共有3个答案

习阳
2023-03-14

我不知道Swift,但我认为您在代码中忘记了引号...

var coords = place[" obj "][" coords]

也许:

var 坐标 = place [“obj”][“坐标”]

呼延景同
2023-03-14

来自 Web 服务的响应数据是一个 JSON 数组,应将其转换为 NS 数组,而不是 NS 词典。

    if let json: NSDictionary = NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers, error: &error) as? NSDictionary {

我对swfit不熟悉,但是看起来你应该换一条线。

如果您对从客户端调用 REST 的 API 有任何问题,可以尝试以下 http://unirest.io/

Unirest是一个非常好的轻量级HTTP客户端,用于使用JSON进行RESTful API调用和配对响应。

法子昂
2023-03-14

如果替换,rest API将返回NSDictionary数组

< code > if let JSON:ns dictionary = NSJSONSerialization。JSONObjectWithData(数据!,选项:NSJSONReadingOptions。可变容器,错误:

 类似资料:
  • plugins/kibana/public/dashboard/index.js 结构跟 visualize 类似,设置两个调用 savedDashboards.get() 方法的 routes,提供一个叫 dashboard-app 的 directive。 savedDashboards 由 plugins/kibana/public/dashboard/services/saved_dash

  • index.js 中,首要当然是注册自己。此外,还加载两部分功能:plugins/kibana/visualize/editor/* 和 plugins/kibana/visualize/wizard/wizard.js。然后定义了一个 route,默认跳转 /visualize 到 /visualize/step/1。 editor editor.js 中也定义了两个 route,分别是 /vi

  • 前文已经说到,kibana.js 中依次加载了各主要功能模块的入口。比如搜索页是 src/core_plugins/kibana/public/discover/index.js。通过这个文件路径就可以猜到,有关搜索页的功能,代码应该都在 src/core_plugins/kibana/public/discover/ 里了。这个目录下的文件有: _hit_sort_fn.js component

  • 词法解析、语法解析 这一节我们分析下PHP的解析阶段,即 PHP代码->抽象语法树(AST) 的过程。 PHP使用re2c、bison完成这个阶段的工作: re2c: 词法分析器,将输入分割为一个个有意义的词块,称为token bison: 语法分析器,确定词法分析器分割出的token是如何彼此关联的 例如: $a = 2 + 3; 词法分析器将上面的语句分解为这些token:$a、=、2、+、3

  • 问题内容: 我正在创建一个复杂的JavaScript库,用于与公司的服务器端框架一起使用。 服务器端框架将其数据编码为简单的XML格式。没有花哨的命名空间或类似的东西。 理想情况下,我想将浏览器中的所有数据解析为JSON。但是,如果这样做,我需要重写一些服务器端代码以吐出JSON。这很痛苦,因为我们拥有无法轻易更改的公共API。 我真正关心的是浏览器中解析JSON和XML的性能。真的有很大的区别要

  • 问题内容: 我有如下所示的HTML内容。我在这里寻找的标签是和。Java是否提供任何HTML解析技术? 问题答案: String value = Jsoup.parse(new File(“d:\1.html”), “UTF-8”).select(“img”).attr(“src”); System.out.println(value); //http://socialimg04.rediff.c

  • 问题内容: 我有这个日期,似乎无法正确解析。 字符串文本“ 2014年5月21日星期三05:44:09 -0700”; 这是我的日期格式 我正在尝试使用SimpleDateFormat对其进行解析。 错误字符串无法分析。 我在这里做错了。 请注意,这不是重复项。另一个问题中没有描述使用强制语言环境的解决方案。 问题答案: 要解析您的日期,您可以使用 但是如果失败了,您会看到 java.text.P

  • 问题内容: 我在我的应用程序中收到一些json数据: 哪个日志: 这正是我想要的。 但是,当我去阅读电子邮件的价值时, 我收到无效的参数异常: 由于未捕获的异常’NSInvalidArgumentException’而终止应用程序,原因:’ * -[NSDictionary initWithDictionary:copyItems:]:字典参数不是NSDictionary’ 如何读取此值? 问题答