解析json导致vbnet

时间:2014-12-10 03:38:27

标签: json vb.net parsing

我如何解析在文本框中检索的代码:

  

{        “项目”:[         {          “snippet”:{           “channelId”:“UCcTbyoZjhqoCn4yVawpMFDA”,           “title”:“永远 - Stratovarius”,           “categoryId”:“10”          },          “统计”:{           “viewCount”:“6180411”,           “likeCount”:“19060”,           “dislikeCount”:“342”,           “favoriteCount”:“0”,           “commentCount”:“3025”          }         }        ]       }

获取值标题的代码和likeCount:

     Dim url As String = "https://www.googleapis.com/youtube/v3/videos?id=8BvV9arABLs&key=KEYAPI&fields=items(id,snippet(channelId,title,categoryId),statistics)&part=snippet,statistics"
            Dim json As String = New WebClient().DownloadString(url)
            Dim root As JToken = JToken.Parse(json)
            Dim sb As New StringBuilder()

            For Each item As JToken In root("items")
            textbox1.text=sb.AppendLine(item.SelectToken("title") & sb.AppendLine(item.SelectToken("likeCount"))
            Next

2 个答案:

答案 0 :(得分:0)

many NuGet packages for working with JSON。使用其中一个。

答案 1 :(得分:0)

首先,在发布之前格式化JSON等标记数据会更好。

像这样:

{
    "items" : [{
            "snippet" : {
                "channelId" : "UCcTbyoZjhqoCn4yVawpMFDA",
                "title" : "Forever - Stratovarius",
                "categoryId" : "10"
            },
            "statistics" : {
                "viewCount" : "6180411",
                "likeCount" : "19060",
                "dislikeCount" : "342",
                "favoriteCount" : "0",
                "commentCount" : "3025"
            }
        }
    ]
}

正如@rufanov所说,有一些用于JSON序列化的软件包。

至于我,我使用的是Newtonsoft JSON。我在C#中使用它并将在其中编写示例,但我坚信它应该在VB.NET上相同或类似。 为JSON对象创建类。注意:成员应该是JSON对象中的名称。

public class JItemArray
{
    public JItem[] items;
}

public class JItem
{
    public JSnippet snippet;
    public JStatistics statistics;
}

public class JSnippet
{
    public string channelId;
    public string title;
    public string categoryId;
}

public class JStatistics
{
    public string viewCount;
    public string likeCount;
    public string dislikeCount;
    public string favoriteCount;
    public string commentCount;
}

然后,你就可以了

JItemArray itemArray = JsonConvert.DeserializeObject<JItemArray>(yourJsonString);

如果出现故障,它将抛出JsonReaderException(在Message中有解释)。 否则,它将返回一个包含所有必要解析数据的正确JItem .NET对象。

这是在NuGet网站上。 https://www.nuget.org/packages/Newtonsoft.Json/

但如果您只需要这两个值,那么使用JToken就是一个不错的做法。