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

时间:2015-01-28 20:55:12

标签: c# json google-bigquery

我正在尝试使用C#API在BigQuery中插入一行(带有嵌套记录)。我可以使用JavaScript API插入一行(带嵌套记录)。但是使用C#API我收到的错误是:“重复字段必须作为JSON数组导入”。他是一个简单的行,我可以使用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 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

的API文档

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

非常感谢任何帮助。

谢谢,

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

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