0

我在 vb.net 中创建了一个函数,它使用 JSON.NET 解析来自 Twitter 的 JSON 响应。解析文本、源代码和 created_at 效果很好。我实际上在程序中使用了这段代码。但是当我尝试解析例如位置时,我只得到一个空字符串。我知道我可能需要一个数组。但是为什么我不需要一个用于文本、源和 created_at 的数组,我该如何声明该数组,它需要哪些值?

我的代码

  Private Sub ParseJson(ByVal Json As String)


    Dim o As JObject = JObject.Parse(Json)


    Dim tweet As String = o("text")
    Dim source As String = o("source")
    Dim created_at As String = o("created_at")


'See below, I get an empty string here

  Dim location As String = o("location")



End Sub
4

1 回答 1

1

根据在线讨论,提供位置信息的方式多种多样。例如,为测试目的提供的示例查询包含以下 JSON 片段:

geo: {
    type: "Point",
    coordinates: [
        47.73491243,
        -122.33668846
    ]
},
coordinates: {
    type: "Point",
    coordinates: [
        -122.33668846,
        47.73491243
    ]
}

因此,location您可以读取其中一个geocoordinates哪个将是嵌套对象,而不是读取。我不知道type他们有哪些有效的 s。

信息作为一个place更复杂的对象提供:

place: {
    id: "ecb63eb9d9d83b31",
    url: "http://api.twitter.com/1/geo/id/ecb63eb9d9d83b31.json",
    place_type: "city",
    name: "Shoreline",
    full_name: "Shoreline, WA",
    country_code: "US",
    country: "United States",
    bounding_box: {
        type: "Polygon",
        coordinates: [ … ]
    }
}

因此,为了阅读place,您可以使用以下内容:

String.Format("{0} ({1})", o("place")("full_name"), o("place")("country_code"))

这将返回

Shoreline, WA (US)

我的理解是,这些属性都不是必须提供的,因此如果您想变得健壮,您应该测试所有这些属性的存在,直到找到一个产生所需信息的属性。

于 2013-03-11T16:33:56.503 回答