【问题标题】:Parsing Only the First Object of Array JSON仅解析数组 JSON 的第一个对象
【发布时间】:2021-12-30 16:58:25
【问题描述】:

我在 JSON 中有以下文本结构:

   {
   "Results":{
      "Burger King":{
         "Location":"New York",
         "Address":"Avenue Dalmatas, 20"
 },
      "Mcdonalds":{
         "Location":"Los Angeles",
         "Address":"Oscar Street, 50"
      }
   }
}

我设法获得了城市和地址结果,但为此我需要在代码中提及餐厅的名称以获取令牌字符串。

Dim JSON As String = **json here**

        Dim token As JToken
        token = JObject.Parse(JSON.ToString())
        Dim data = token.SelectToken("Results").SelectToken("Burger King").SelectToken("Location")

我的问题是,我如何仅在列表框中列出餐厅(汉堡王、麦当劳等)?因此,我可以添加一些功能,根据用户的选择检查地址和城市,我知道并且已经了解如何操作,但是仅获取餐厅名称的令牌对我来说很困难。例如,如果我有一个新的餐厅名称,我不想在代码中手动包含。我尝试了很多不同的方法,但我使用的最后一种方法如下:

Dim data = token.SelectToken("Results").SelectToken(0) 'i thought it would print 'Burger King'
'or this one
Dim data = token.SelectToken("Results")(0).ToString()

我尝试了一些“For Each”循环代码,但也没有成功。我研究了无数关于如何做到这一点的方法,但没有任何效果。我相信这是一件简单的事情,我要么忽略,要么完全忘记。请给我一个光明!谢谢。

【问题讨论】:

    标签: json vb.net json.net


    【解决方案1】:

    我可以给你贴c#代码,如果你需要的话,把它翻译成VB会更容易

    var jsonObject=  JObject.Parse(json);
    
    List<string> restaurantNames= ((JObject)jsonObject["Results"]).Properties()
    .Select(x=>x.Name).Distinct().ToList();
    

    结果

    Burger King
    Mcdonalds
    

    【讨论】:

    • 嘿,塞尔吉。我会尽快尝试并更新您的信息:) ty
    • @toxdotnet 好的,请随时通知我。
    • 像魅力一样工作 :) 非常感谢。
    • 不客气!
    猜你喜欢
    • 2012-06-12
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    相关资源
    最近更新 更多