使用 C# 在带有嵌套记录的 BigQuery 中插入一行 API

Inserting a Row in BigQuery with Nested Record using C# API

我正在尝试使用 C# API 将一行(带有嵌套记录)插入 BigQuery。我可以使用 JavaScript API 插入一行(带嵌套记录)。但是使用 C# API 我收到错误提示:"Repeated field must be imported as a JSON Array"。他是一个简单的行,我可以使用 JavaScript API

插入
var json = {'rows':[{'json':
  {"inputs" : [{
      "Age":"10"
  }]}}]};

这在 JS 中工作正常,但我不清楚如何在 C# 中执行此操作。

这是我的尝试:

var r = new TableDataInsertAllRequest.RowsData();
r.Json = new Dictionary<string, object>();
var dict = new Dictionary<string, object>();
dict.Add("Age", "10");
r.Json.Add("inputs", dict);

我也尝试使用 JSON API

string json = JsonConvert.SerializeObject(input, jsonSettings);
var dict = JsonConvert.DeserializeObject<Dictionary<string, object>>(json, jsonSettings);
r.Json.Add("jsonInputs", dict);

这是 RowsData 的 API 文档 https://developers.google.com/resources/api-libraries/documentation/bigquery/v2/csharp/latest/classGoogle_1_1Apis_1_1Bigquery_1_1v2_1_1Data_1_1TableDataInsertAllRequest_1_1RowsData.html

它有点模糊或不清楚如何做嵌套记录。我试着直接写 JSON 但得到了同样的错误。

如有任何帮助,我们将不胜感激。

谢谢,

从有效的 json 示例中有两个数组。在您提供的两个失败示例中,我都没有看到任何数组。

我怀疑添加数组可以解决您的问题。考虑将已知工作的 json 字符串解析为 json 对象并将其用作快速测试。

以下代码片段成功适用于 bigquery:

JArray inputs = new JArray();
JObject inputOne = new JObject(new JProperty("Age", "12"));
inputOne.Add(new JProperty("BirthDate", "1234"));
r.Json.Add("inputs", inputs);