.net - 如何在 C# 中创建 JSON 对象,其中属性名称是动态设置的?

标签 .net json

我需要返回一个作为 SQL 查询结果的 JSON 对象数组。 SQL 查询可以是任何内容,因此我需要在代码中动态创建属性名称和值。

例如,“从员工中选择名字,姓氏”我想返回:

{ "data": 
   [{
        "first_name": "dave",
        "last_name": "thielen"
    },
    {
        "first_name": "john",
        "last_name": "smith"
    }]
}

但下一个查询可能是“从订单中选择项目、价格、税金、ship_date 并希望返回:
{ "data": 
   [{
        "item": "HD TV",
        "price": "598.95"
        "tax": "59.89"
        "ship_date": "2013-08-26"
    },
    {
        "item": "Cables",
        "price": "54.67"
        "tax": "5.47"
        "ship_date": "2013-08-26"
    }]
}

如何在 C# 中构建它然后转换为 JSON?

谢谢 - 戴夫

最佳答案

使用匿名类型,例如(使用 Json.Net ),

var json = JsonConvert.SerializeObject(
    new { 
        data = new[]{ 
            new{name="a",surname="b"},
            new{name="c",surname="d"},
        } 
    }
    );

会给
{"data":[{"name":"a","surname":"b"},{"name":"c","surname":"d"}]}

编辑

I need "a": "b"


var json = JsonConvert.SerializeObject(
        new Dictionary<string, string>() {
            { "a","b" }
        }
    );

输出:{"a":"b"}
编辑2

还有一个有趣的
var dict = new Dictionary<string, string>() {
    { "a","b" },
    { "c","d" }
};

var json = JsonConvert.SerializeObject(
        new { data = dict.Select(x => new[]{x}.ToDictionary(kv => kv.Key, kv => kv.Value)) }
    );

输出:{"data":[{"a":"b"},{"c":"d"}]}

关于.net - 如何在 C# 中创建 JSON 对象,其中属性名称是动态设置的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18452765/

相关文章:

.net - 在 Powershell 脚本中将 Azure 信息保护添加到电子邮件

java - Spring JSON View

javascript - 将大型 JSON 数据从 C# Web API 发送到 Javascript 客户端

jquery - 是什么导致 $.ajax 导致完全回发

c# - 如何正确加入多个异步方法的结果?

c# - 完整的 .NET OpenCL 实现

c# - 案例陈述的更好替代方案

c# - 如何在 matlab 中删除对 .net 程序集的引用

php - 在隐藏输入中使用 base64_encode 与 json_encode 传递编码数据

java - 使用 lambda 更新 JSON 值