Json数组的问题

Problems with Json array

提问人:Bjorn Meijer 提问时间:9/22/2023 最后编辑:T.S.Bjorn Meijer 更新时间:9/25/2023 访问量:54

问:

我正在编写一个带有 API 的 VB.Net 应用程序,用于将值发送到数据源。 我的 JSON 输出是使用 NewtonSoft.Json 制作的,如下所示:

{
    "Id": null,
    "Name": "Werkkaart_tests",
    "ExternalId": "Werkkaart_test",
    "Headers": null,
    "Rows": null,
    "NewRows": ["val 1, val 2, val 3, val 4"],
    "DeletedRows": null,
    "CompanyId": 1111,
    "IntegrationKey": "lsfjlsfjlsfj3987"
}

使用 PUT 请求,我可以更新数据源。 JSON 的模型架构如下所示:

{
  "Id": "",
  "Name": "",
  "ExternalId": "",
  "Headers": [
    {
      "Name": "",
      "DisplayAt": ""
    }
  ],
  "Rows": [
    "Array[string]"
  ],
  "NewRows": [
    "Array[string]"
  ],
  "DeletedRows": [
    "Array[string]"
  ],
  "CompanyId": 0,
  "IntegrationKey": ""
}

数据源有 4 列,分别名为 col1、col2、col3 和 col4。 要向数据源添加新行,我必须在 NewRows 中创建一个字符串数组。

当我发送我的 JSON 字符串时,第 1 列到第 4 列填充了以下值:

col1 col2 col3 col4 (英语)
瓦尔 1 瓦尔 2

我想要的是以下内容:

col1 col2 col3 col4 (英语)
val1 val2 val3 val4

我尝试在我的值周围放置单引号,但这不起作用。 我还尝试了以下方法:

"NewRows": ["val 1", "val 2", "val 3", "val 4"],

但我得到以下结果:

col1 col2 col3 col4 (英语)
val1
val2
val3
val4

下面是 vb 代码:

Dim src As New DSS.DataSource
Dim values As List(Of String) = New List(Of String)

values.Add("val 1") 
values.Add("val 2")
values.Add("val 3")

src.Name = "SourceName"
src.ExternalId = "Source_ExtID"

Dim newRowsString As String = String.Join(", ", values)
src.NewRows = New List(Of String) From {newRowsString} 

Dim json As String = JsonConvert.SerializeObject(src)
Console.WriteLine(json)
数组 JSON vb.net json.net

评论

1赞 djv 9/22/2023
如果您提供 vb 代码会有所帮助
1赞 T.S. 9/22/2023
"val 1, val 2, val 3, val 4"<-- 这是一个单一的数组项,因为涉及 JSON
0赞 T.S. 9/22/2023
您正在混合水平与垂直。json 属性是水平数据。您的 Array 值是垂直数据。即数组项每个是 1 条记录。attributes - 每个 1 个字段
0赞 Bjorn Meijer 9/22/2023
当我像这样执行 PUT 请求时:“val 1、val 2、val 3、val 4”,它会像 val |, ρ瓦尔 |2. 我建议它就像 val 1 |瓦尔 2 |瓦尔 3 |瓦尔 4.
1赞 Craig 9/23/2023
新行本身应该是一个数组吗?即生成的 JSON 应该是吗?"NewRows" : [["val 1", "val 2", "val 3", "val 4"]]

答:

0赞 Craig 9/25/2023 #1

请注意,的类型表示为 。但是您提供的是一个标量字符串,即 .您应该在数组中将值作为单独的字符串提供,因此这是一个数组的数组,即生成的 json 应该是 .NewRows"Array[String]""val 1, val 2, val 3, val 4"NewRows"NewRows" : [["val 1", "val 2", "val 3", "val 4"]]

外部数组中的每个元素都是不同的行,内部数组的每个元素都是该特定行中的单独列。