Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JSON.net(VB.net)序列化嵌套JSON_Json_Vb.net_Serialization_Json.net - Fatal编程技术网

使用JSON.net(VB.net)序列化嵌套JSON

使用JSON.net(VB.net)序列化嵌套JSON,json,vb.net,serialization,json.net,Json,Vb.net,Serialization,Json.net,NET和我正在尝试创建一个类似这样的JSON输出 { "data": [{ "title": "blah", "youtube_videos": { "video_identifier": [ { "video_identifier": "id1" }, "video_identifier": "id2" }] 等等 n个“新闻”与n个“视频”关联 这是我到目前为止的代码:

NET和我正在尝试创建一个类似这样的JSON输出

{
"data": [{
"title": "blah",
"youtube_videos": {
"video_identifier": [
             {
         "video_identifier": "id1"
             },
         "video_identifier": "id2"     
           }]
等等

n个“新闻”与n个“视频”关联

这是我到目前为止的代码:

Class News
    Public Property title() As String
        Get
            Return _title
        End Get
        Set(value As String)
            _title = value
        End Set
    End Property
    Private _title As String


    Public Property id() As String
        Get
            Return _sId
        End Get
        Set(value As String)
            _sId = value
        End Set
    End Property

    Private _youtube_videos As YoutubeVideos = New YoutubeVideos ()
    Public Property youtube_videos As YoutubeVideos 
        Get
            Return _youtube_videos
        End Get
        Set(ByVal value As YoutubeVideos)
            _youtube_videos = value
        End Set
    End Property
Ënd Class

Public Class YoutubeVideos
    Private _video_identifier As String
    Public Property video_identifier() As String
        Get
            Return _video_identifier
        End Get
        Set(ByVal value As String)
            _video_identifier = value
        End Set
    End Property


End Class

我不知道如何继续将所有视频添加到每个新视频中


任何帮助都将不胜感激。谢谢。

解决方案中缺少两件事(忽略解决方案中的输入错误): -youtube_videos属性必须是数组或列表 -该数组可以是一个简单的对象数组(JSON.NET将为您序列化)

试试这个

Private Function getJSON(sJSON As String) As String
    Dim objNews = New List(Of News)()
    Dim news = New News()
    news.id = ""
    news.title = "blah"
    Dim lst = New List(Of Object)()
    lst.Add(New With {.video_identifier = "id1"})
    lst.Add(New With {.video_identifier = "id2"})
    news.video_identifier = lst.ToArray()
    objNews.Add(news)
    Return Newtonsoft.Json.JsonConvert.SerializeObject(New With {.data = objNews})
End Function

Class News

    Public Property title As String
        Get
            Return _title
        End Get

        Set
            _title = value
        End Set
    End Property

    Private _title As String

    Private _sId As String

    Public Property id As String
        Get
            Return _sId
        End Get

        Set
            _sId = value
        End Set
    End Property

    Private _youtube_videos As Object() = New List(Of Object)().ToArray()

    Public Property video_identifier As Object()
        Get
            Return _youtube_videos
        End Get

        Set
            _youtube_videos = value
        End Set
    End Property
End Class

Public Class YoutubeVideos

    Private _video_identifier As String

    Public Property video_identifier As String
        Get
            Return _video_identifier
        End Get

        Set
            _video_identifier = value
        End Set
    End Property
End Class

Don Jayamanne的回答已经指出,您需要使用列表

您还需要使用适当的模型(类的结构)来生成所需的JSON。例如,您需要引入新类

此外,还需要使用
JsonProperty
属性来控制用于生成JSON的名称

试试这个:

Class News
    <JsonProperty(propertyName:="title")>
    Public Property Title As String
    <JsonProperty(propertyName:="youtube_videos")>
    Public Property YoutubeVideos As YoutubeVideos = YoutubeVideos
End Class

Class NewsList
    <JsonProperty(propertyName:="data")>
    Public Items As List(Of News) = New List(Of News)()
End Class


Public Class YoutubeVideos
    <JsonProperty(propertyName:="video_identifier")>
    Public Property Items As List(Of YoutubeVideo) = New List(Of YoutubeVideo)
End Class

Public Class YoutubeVideo
    <JsonProperty(propertyName:="video_identifier")>
    Public Property VideoIdentifier As String
End Class

Sub Main()

    Dim newsItem = New News()
    newsItem.Title = "blah"

    Dim video1 = New YoutubeVideo()
    video1.VideoIdentifier = "id1"
    newsItem.YoutubeVideos.Items.Add(video1)

    Dim video2 = New YoutubeVideo()
    video2.VideoIdentifier = "id2"
    newsItem.YoutubeVideos.Items.Add(video2)

    Dim newsList = New NewsList()
    newsList.Items.Add(newsItem)
    Dim result = JsonConvert.SerializeObject(newsList)

End Sub
课堂新闻
公共财产所有权作为字符串
公共属性YoutubeVideos As YoutubeVideos=YoutubeVideos
末级
类新闻列表
公共项目列表(新闻)=新列表(新闻)()
末级
公共类YoutubeVideos
公共财产项目作为列表(YoutubeVideo)=新列表(YoutubeVideo)
末级
公共类YoutubeVideo
公共属性VideoIdentifier作为字符串
末级
副标题()
Dim newsItem=新新闻()
newsItem.Title=“诸如此类”
Dim VIDEO 1=新YoutubeVideo()
video1.VideoIdentifier=“id1”
newsItem.YoutubeVideos.Items.Add(视频1)
Dim video2=新YoutubeVideo()
video2.VideoIdentifier=“id2”
newsItem.YoutubeVideos.Items.Add(视频2)
Dim newsList=新新闻列表()
newsList.Items.Add(newsItem)
Dim result=JsonConvert.SerializeObject(新闻列表)
端接头

我将对此进行检查。谢谢你的回答。
Class News
    <JsonProperty(propertyName:="title")>
    Public Property Title As String
    <JsonProperty(propertyName:="youtube_videos")>
    Public Property YoutubeVideos As YoutubeVideos = YoutubeVideos
End Class

Class NewsList
    <JsonProperty(propertyName:="data")>
    Public Items As List(Of News) = New List(Of News)()
End Class


Public Class YoutubeVideos
    <JsonProperty(propertyName:="video_identifier")>
    Public Property Items As List(Of YoutubeVideo) = New List(Of YoutubeVideo)
End Class

Public Class YoutubeVideo
    <JsonProperty(propertyName:="video_identifier")>
    Public Property VideoIdentifier As String
End Class

Sub Main()

    Dim newsItem = New News()
    newsItem.Title = "blah"

    Dim video1 = New YoutubeVideo()
    video1.VideoIdentifier = "id1"
    newsItem.YoutubeVideos.Items.Add(video1)

    Dim video2 = New YoutubeVideo()
    video2.VideoIdentifier = "id2"
    newsItem.YoutubeVideos.Items.Add(video2)

    Dim newsList = New NewsList()
    newsList.Items.Add(newsItem)
    Dim result = JsonConvert.SerializeObject(newsList)

End Sub