【问题标题】:Read and save unknown key value pair in JSON读取并保存 JSON 中的未知键值对
【发布时间】:2014-01-12 07:18:30
【问题描述】:

我正在进行 API 调用。成功完成后,我知道 JSON 响应的结构。我可以读取它并使用 JSON.NET 将其保存在数据库中,但如果 API 调用产生错误,则会生成一个未知结构的 JSON。我必须解析并将其保存在数据库中。我怎样才能做到这一点。
错误响应的一般结构是这样的:

{"origin-of_error":"error_message"}

在某些情况下,还存在其他键值。

【问题讨论】:

  • 未知的 json-object 是否总是结构来源:{ foo : bar } 之类的错误,或者也可能是 { foo : bar, zuu : xaa }
  • @threeFourOneSixOneThree 是的,它总是像 {foo:bar} 但有时它还提供 {foo: bar, koo:kaa} 结构

标签: c# asp.net .net json json.net


【解决方案1】:

由于您不知道 JSON 的确切内容,但您至少知道它是一个带有键值对的平面对象,那么我建议反序列化为 Dictionary<string, string>。然后,您可以轻松地遍历键值对以提取需要存储在数据库中的数据。

string json = @"
{
    ""origin-of_error"" : ""error_message"",
    ""foo"" : ""bar""
}";

var dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);

foreach (KeyValuePair<string, string> kvp in dict)
{
    Console.WriteLine(kvp.Key + ": " + kvp.Value);
}

【讨论】:

    【解决方案2】:

    试试这个

    IDictionary<string, JToken> jsondata = JObject.Parse(json);
    
                foreach (KeyValuePair<string, JToken> innerData in jsondata) {
                    Console.WriteLine("{0}=> {1}",innerData.Key, innerData.Value.ToString()); 
                }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-22
      • 2021-08-26
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      • 1970-01-01
      • 1970-01-01
      • 2017-11-25
      相关资源
      最近更新 更多