根据给定的列名动态生成json数组

List<string> cols = new List<string>() { "姓名","性别","年龄"};

1.使用JArray,JObject对象

  1. //JObject
  2. JArray arr = new JArray();
  3. JObject obj = new JObject();
  4. foreach (var col in cols)
  5. {
  6. obj[col] = col + "_test";
  7. }
  8. arr.Add(obj);
  9.  
  10. //获得对象的所有字段名
  11. var itemProperties = ((JObject)arr[]).Properties().ToList();
  12. foreach (var item in itemProperties)
  13. {
  14. var v = item.Name+":"+item.Value;
  15. }
  16.  
  17. string json1 = JsonEncode(arr);

2.使用Datatable

  1.  
  1. //Datatable
  2. DataTable dt = new DataTable();
  3. var row = dt.NewRow();
  4. foreach (var col in cols)
  5. {
  6. dt.Columns.Add(col);
  7. row[col] = col + "_test";
  8. }
  9. dt.Rows.Add(row);
  10. string json2 = JsonEncode(dt);
  11.  
  12. //var colName=dt.Columns[0].ColumnName;
  1.  
  1.  

3.使用Dynamic对象

  1. //Dynamic http://www.cnblogs.com/xuejianxiyang/p/4964739.html
  2. dynamic dobj = new System.Dynamic.ExpandoObject();
  3.  
  4. var dic = (IDictionary<string, object>)dobj;
  5. foreach (var col in cols)
  6. {
  7. dic[col] = col + "_test";
  8. }
  9.  
  10. foreach (var fieldItem in (IDictionary<String, Object>)dobj)
  11. {//获得对象的所有字段名
  12. var v = (fieldItem.Key + ": " + fieldItem.Value);
  13. }
  14.  
  15. List<System.Dynamic.ExpandoObject> list = new List<System.Dynamic.ExpandoObject>();
  16. list.Add(dobj);
  17.  
  18. string json3 = JsonEncode(list);

public static string JsonEncode<T>(T jsonstruct, bool withIndentFormat = true)
{
//var setting=new JsonSerializerSettings();
//setting.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;

Formatting format = Formatting.Indented;
if (!withIndentFormat)
{
format = Formatting.None;
}

return JsonConvert.SerializeObject(jsonstruct, format,
new JsonSerializerSettings()
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
PreserveReferencesHandling = PreserveReferencesHandling.None
});

}

From:http://www.cnblogs.com/xuejianxiyang/p/6639610.html

c# json数组动态字段名的更多相关文章

  1. JS中json数组多字段排序方法(解决兼容性问题)(转)

    前端对一个json数组进行排序,用户需要动态的根据自己的选择来对json数据进行排序. 由于后台表设计问题所以不能用sql进行排序,这里用到了js的sort方法. 如果对单字段排序,那么很简单,一个s ...

  2. sqlserver 动态表名 动态字段名 执行 动态sql

    动态语句基本语法: 1 :普通SQL语句可以用exec执行 Select * from tableName exec('select * from tableName') exec sp_execut ...

  3. JSON,数组根据字段多次分组

    我们在前端开发过程中,遇到json对象,有时会需要多次分组.比如说,先按照是业务分组,然后再按照产品线分组,然后通过table或其他方式展示或操作 var obj1=[ { "demp&qu ...

  4. JSON,数组根据字段分组

    function GroupbyName(data, Name) { //data数据源,Name 根据什么字段分组 var map = {}, dest = []; for (var i = 0; ...

  5. 在Go语言中使用JSON(去掉空字段)

    Encode 将一个对象编码成JSON数据,接受一个interface{}对象,返回[]byte和error: func Marshal(v interface{}) ([]byte, error) ...

  6. [转]用GSON 五招之内搞定任何JSON数组

    关于GSON的入门级使用,这里就不提了,如有需要可以看这篇博文 <Google Gson的使用方法,实现Json结构的相互转换> ,写的很好,通俗易懂. 我为什么写这篇文章呢?因为前几晚跟 ...

  7. [转] Android:用GSON 五招之内搞定任何JSON数组

    [From] http://www.open-open.com/lib/view/open1472632967912.html 写在前面 关于GSON的入门级使用,这里就不提了,如有需要可以看这篇博文 ...

  8. Json串的字段如果和类中字段不一致,如何映射、转换?

    Json串是我们现在经常会遇到的一种描述对象的字符串格式.在用Java语言开发的功能中,也经常需要做Json串与Java对象之间的转换. fastjson就是经常用来做Json串与Java对象之间的转 ...

  9. 动态查询:getBy字段名

    http://www.php.cn/php/php-getBy.html 根据字段名动态查询:getBy字段名( ) 该方法很有意思,手册的说得很简略,我们根据源码来好好说道说道~~ 1. 功能:根据 ...

随机推荐

  1. 北航软院2015级C#期末考试部分考题讲解

    洗洗睡了吧,我怎么知道明天的考试题目! 或者 你明年补考可以过来看看:) 晚安.

  2. AIMR 固定收益推荐读物

    目录 AIMR Suggested Fixed-Income Readings I. Perspectives on Interest Rates and Pricing of Traditional ...

  3. 编写高质量代码:Web前端开发修炼之道(三)

    第五章:高质量的Javascript 这章的内容我看的最久,这是跟我js基础没打好有着莫大的关系,但是还是耐着性子看完了, 不懂的东西都是百度上搜索,理解后再继续.下面是记录下来的笔记. 1)如何避免 ...

  4. Q844 比较含退格的字符串

    给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果. # 代表退格字符. 示例 1: 输入:S = "ab#c", T = " ...

  5. 使用docker部署STF服务(CentOS环境)

    一.安装docker环境 更新软件 sudo yum update 执行安装 sudo yum install docker 查看docker镜像 sudo docker images 二.拉取相关镜 ...

  6. Docker - 故障排查指南

    这阵子开始捣鼓 Docker,遇到过不少问题,下面记录下问题以及解决方案 一.Docker 报 Failed to start Docker Application Container Engine ...

  7. erlang随笔3--OTP

    OTP最核心的概念就是行为.一个行为封装了某种常见的行为模式.可以把这些行为理解为某种应用程序框架.可以通过回调模块来 定制这些框架.OTP依靠行为引用了容错,扩容和动态代码升级等特性.所以在写回调模 ...

  8. bitset用法

    学习博客:https://www.cnblogs.com/magisk/p/8809922.html C++的 bitset 在 bitset 头文件中,它是一种类似数组的结构,它的每一个元素只能是0 ...

  9. gRPC GoLang Test

    gRPC是Google开源的一个高性能.跨语言的RPC框架,基于HTTP2协议,基于protobuf 3.x,基于Netty 4.x +. gRPC与thrift.avro-rpc.WCF等其实在总体 ...

  10. Oracle TM锁和TX锁

    CREATE TABLE "TEST6" ( "ID" ), "NAME" ), "AGE" ,), "SEX ...