【问题标题】:Add object to JSON in JSON .NET在 JSON .NET 中将对象添加到 JSON
【发布时间】:2019-09-18 05:23:37
【问题描述】:

我有一个用于将 JSON 映射到 C# 的简单类:

Public Class AtributeRaport
    Public Property NumeRaport As String
    Public Property ApplicationId As String
    Public Property ObjectId As String
    Public Property Selections As String
    Public Property Deprecated As String
End Class

Public Class Rapoarte
    Public Property Id As String
    Public Property AtributeRaport As List(Of AtributeRaport)
End Class

到目前为止,我有这个Sub,用于将对象添加到 JSON 文件:

Sub AddToJson(id As String, nume As String, appId As String, objectId As String, selections As String, deprecated As String)
        Dim filePath = System.AppDomain.CurrentDomain.BaseDirectory & "\reports.json"
        Dim jsonData = IO.File.ReadAllText(filePath)
        Dim jsonroot As List(Of Rapoarte) = If(JsonConvert.DeserializeObject(Of List(Of Rapoarte))(jsonData), New List(Of Rapoarte))

        Dim attrlist = New AtributeRaport With {
            .ApplicationId = appId,
            .NumeRaport = nume,
            .ObjectId = objectId,
            .Selections = selections,
            .Deprecated = deprecated
            }
        jsonroot.Add(New Rapoarte With {.Id = id, .AtributeRaport = New List(Of AtributeRaport)})

        Dim serializerSettings As New JsonSerializerSettings
        serializerSettings.NullValueHandling = NullValueHandling.Ignore
        serializerSettings.Formatting = Formatting.Indented
        jsonData = JsonConvert.SerializeObject(jsonroot, serializerSettings)
        IO.File.WriteAllText(filePath, jsonData)
    End Sub

如果我运行它,输出是:

[
  {
    "Id": "1",
    "AtributeRaport": []
  }
]

对于我的一生,我不知道如何添加我在attrlist 中声明的那些讨厌的值。

另外,如果我想从 JSON 中获取某个 id 下的所有值,这种方法是否可行:

Public Function GetAttributesJson(id As String, filepath As String) As List(Of String)
        Dim jObject As JObject = JObject.Load(New JsonTextReader(File.OpenText(filepath)))
        Dim attrlist As List(Of String) = New List(Of String)
        Dim resources As JArray = CType(jObject("id"), JArray)
        For Each attr In resources.Where(Function(obj) obj("id").Value(Of String) Is id.ToString)
            attrlist.Add(attr("ApplicationId").Value(Of String))
            attrlist.Add(attr("NumeRaport").Value(Of String))
            attrlist.Add(attr("ObjectId").Value(Of String))
            attrlist.Add(attr("Selections").Value(Of String))
            attrlist.Add(attr("Deprecated").Value(Of String))
        Next
        Return attrlist
    End Function

非常感谢您的任何提示!

【问题讨论】:

    标签: .net json vb.net function class


    【解决方案1】:

    .AtributeRaport 未分配给“attrlist”,这可能会导致此问题

      jsonroot.Add(New Rapoarte With {.Id = id, .AtributeRaport = (New List(Of AtributeRaport) From {
                attrlist})})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      • 2018-05-18
      • 1970-01-01
      • 1970-01-01
      • 2015-09-21
      • 1970-01-01
      • 2017-10-27
      相关资源
      最近更新 更多