使用JSON.net(VB.net)序列化嵌套JSON
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个“视频”关联 这是我到目前为止的代码:
{
"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