【问题标题】:Inserting a Row in BigQuery with Nested Record using C# API使用 C# API 在带有嵌套记录的 BigQuery 中插入一行
【发布时间】:2015-01-28 20:55:12
【问题描述】:

我正在尝试使用 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 但得到了同样的错误。

任何帮助将不胜感激。

谢谢,

【问题讨论】:

    标签: c# json google-bigquery


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      以下代码 sn-p 成功地适用于 bigquery:

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

      【讨论】:

      • 老兄,你能给我一个完整的例子吗?因为我已经尝试过了,但它似乎不起作用。
      猜你喜欢
      • 1970-01-01
      • 2021-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多