在JSON中读取并保存未知键值对

时间:2014-01-12 07:18:31

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

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

{"origin-of_error":"error_message"}

在某些情况下,还会出现其他键值。

2 个答案:

答案 0 :(得分:2)

由于您不知道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);
}

答案 1 :(得分:0)

试试这个

IDictionary<string, JToken> jsondata = JObject.Parse(json);

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