c# - 遍历通用对象属性

标签 c# json json.net

我有一个像这样存储在数据库中的 JSON 字符串:

{
    "Error": "Lol",
    "ErrorDate": "2016-05-13T10:43:27.6365795Z",
    "Application": "Business",
    "UserName": "Josh",
    "TraceSession": "moo"
}

表中每个项目的 JSON 字符串都不同。 在我的应用程序中,我想将其反序列化为一个对象,但由于 JSON 始终不同,我无法创建模型。

目前我有这个:

var jObject = JsonConvert.DeserializeObject(FieldNames);

我认为这可行,但现在我需要遍历属性以获取 名称和值。我试过这个:

// For each property in our oject
foreach (var key in jObject.GetProperties())
{

    // Create a list
    var list = new List<string>();
    list.Add(key.GetValue());            

    // Add our substitution
    email.AddSubstitution($"--{ key.ToUpper() }--", list);
}

但它失败了,因为

'object' does not contain a definition for 'GetProperties'

有谁知道我该如何解决这个问题?

最佳答案

A JObject本质上是一个字典。您可以像这样遍历键/值:

class Program
{
    static void Main(string[] args)
    {
        const string json = "{ " +
            "\"Error\": \"Lol\", " +
            "\"ErrorDate\": \"2016-05-13T10:43:27.6365795Z\", " +
            "\"Application\": \"Business\", " +
            "\"UserName\": \"Josh\", " +
            "\"TraceSession\": \"moo\" " +
        " }";

        var jobj = JObject.Parse(json);

        foreach (var prop in jobj)
        {
            Console.WriteLine("Key: {0}, Value: {1}", prop.Key, prop.Value);
        }
    }
}

关于c# - 遍历通用对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37215126/

相关文章:

c# - 这真的是异步电子邮件和最佳实践吗?

c# - 如何在 Visual Studio 安装项目中使文本框字段成为必填项?

c# - 将单个实例序列化为多个 JSON 字符串

c# - 使用 JsonConverter 的 Json.NET 自定义序列化 - 如何获得 "default"行为

c# - 如何为 HttpClient (WinForms) 设置默认的 json 序列化设置

c# - 在c#中使用ftp下载文件

c# - 为什么 C# TryParse 不处理 NaN?

java - 解析具有未确定数量的子节点的 JSON 对象

javascript - 通过 HTML 表单 + JavaScript 将 JSON 结构提交给 MailChimp API

android - 改造 : How to make XML request and get back JSON response