首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从C# DataTable返回复杂的Json对象

如何从C# DataTable返回复杂的Json对象
EN

Stack Overflow用户
提问于 2017-10-13 00:11:06
回答 2查看 635关注 0票数 0

我们目前使用Newtonsoft.Json将datatable转换为json流。

如果我的datatable包含以下内容:

代码语言:javascript
复制
Name    Sales
Joe     10
Mary    20

然后,下面的代码将返回[{"Name": "Joe", "Sales":10},{"Name": "Mary", "Sales":20}],这很棒:

代码语言:javascript
复制
 string callback = JsonConvert.SerializeObject(table);
 byte[] resultBytes = Encoding.UTF8.GetBytes(callback);
 return new System.IO.MemoryStream(resultBytes);

但有时我需要更复杂的json流。如下所示:

{ "map": "USA", "areas":[{"Name": "Joe", "Sales":10},{"Name": "Mary", "Sales":20}]}

json现在包括一个额外的元组{ "map": "USA", "areas":和一个额外的{}

我的datatable需要包括什么才能获得这种类型的json流?那么C#需要什么样的外观呢?

EN

回答 2

Stack Overflow用户

发布于 2017-10-13 00:34:19

您需要定义一个新类并序列化整个对象,如下所示:

代码语言:javascript
复制
// Define the class / model
public class MyNewClass {
// Case sensitive vvv to match your Json
    public string map {get; set;}
    public DataTable areas {get; set;}
    // you can have several constructor methods defined, I show the usage for each below.
    public MyNewClass() {}
    public MyNewClass(string countryMap, DataTable table) {
        map = countryMap;
        areas = table;
    }
}

用法:

代码语言:javascript
复制
// Instantiate the object from the class / model
var returnData = new MyNewClass("USA", table);
// or
var returnData2 = new MyNewClass();
returnData2.map = "USA";
returnData2.areas = table;

// Finally serialize your object
var yourJson = JsonConvert.SerializeObject(returnData);
// or
var yourJosn2 = JsonConvert.SerializeObject(returnData2);
票数 0
EN

Stack Overflow用户

发布于 2017-10-13 03:33:26

如果您数据源实际上是一个数据库(看起来是这样),那么可以使用numerous advantages of using POCOs over DataTable.

其中之一是可以使用ORM轻松地以方便的形式获取信息。例如,EntityFramework

对于您的特定复杂示例,流程可能如下所示:

1)定义用于保存数据的类

代码语言:javascript
复制
  class Area 
   {
       public string Name { get; set; }
       public int Sales { get; set; }
   }

   class Map 
   {
       public string Map { get; set; }
       public List<Area> Areas { get; set; }
   }

2)填充数据库中的数据

3)使用JsonConvert.SerializeObject序列化区域。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46714304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档