如何在C#中生成格式化的Json [英] How Can I Produce A Formatted Json In C#

查看:966
本文介绍了如何在C#中生成格式化的Json的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在C#中创建一个JSON文件。 JSON文件的数据来自SQL Server。我想以格式化的方式将dt(dataTable对象)转换为JSON文件。



我使用下面的代码,但输出格式如下(水平):



[{Hotel_Name:Hotel1,filter_board_id:1,filter_holiday_type_id:3,filter_airport_from_iata:FFF,filter_airport_to_iata: SFS},



但我希望它是如下垂直格式:



[ {Hotel_Name:Hotel1,

filter_board_id:1,

filter_holiday_type_id:3,

filter_airport_from_iata: FFF,

filter_airport_to_iata:SFS

},



我使用以下代码作为现在:



I need to create a JSON file in C#. The data for JSON file comes form SQL Server. I want to convert a dt(dataTable object) to JSON file in formatted manner.

I am using below code for this but output is in below format(horizontal):

[{"Hotel_Name":"Hotel1","filter_board_id":1,"filter_holiday_type_id":3,"filter_airport_from_iata":"FFF","filter_airport_to_iata":"SFS"},

But I want it to be in vertical format like below:

[{"Hotel_Name":"Hotel1",
"filter_board_id":1,
"filter_holiday_type_id":3,
"filter_airport_from_iata":"FFF",
"filter_airport_to_iata":"SFS"
},

I an using below code as of now:

public string ConvertDataTabletoString()
      {


          DataTable dt = new DataTable();
          using (SqlConnection con = new SqlConnection("Data Source=mypc;Initial Catalog=db;Persist Security Info=True;User ID=sa;Password=password@123;pooling=true;Min Pool Size=20;Max Pool Size=200;Connect Timeout=120"))
          {
              using (SqlCommand cmd = new SqlCommand("select * from paradism_publisher where Hotel_Name='Hotel1'", con))
              {
                  con.Open();
                  SqlDataAdapter da = new SqlDataAdapter(cmd);
                  da.Fill(dt);
                  DataTable newdt = PivotTable(dt);


                  System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
                  List<dictionary><string,>> rows = new List<dictionary><string,>>();
                  Dictionary<string,> row;
                  foreach (DataRow dr in newdt.Rows)
                  {
                      row = new Dictionary<string,>();
                      foreach (DataColumn col in newdt.Columns)
                      {
                          row.Add(col.ColumnName, dr[col]);
                      }
                      rows.Add(row);
                  }

                  return serializer.Serialize(rows);
                  //object ndt = newdt;
                  //return serializer.Serialize(ndt);
              }
          }
      }



请提供您的建议。


Please provide your suggestions.

推荐答案

根据我对您的问题的理解,您将做两个事情:



1.你想在某个地方和你的程序中显示/存储垂直格式的数据,你想为此编写代码。

2.为方便起见,您只想以垂直格式查看数据。



在第二种情况下,您只需要使用JSON查看器工具:

http://jsonviewer.codeplex.com/releases/view/63839 [ ^ ]



在第一种情况下,您可以查看代码并了解JSON查看器的工作原理进行格式化,因为它是开源的,代码可在以下网址找到:

http:// jsonviewer .codeplex.com / SourceControl / latest#Readme.txt [ ^ ]



希望那些会有所帮助。谢谢。
As per my understanding of your question, you would be doing two things:

1. You want to display/store vertical formatted data in somewhere and in your program, you want to write code for that.
2. For convenience, you just want to view data in vertical format.

In second case you just need to use JSON viewer tool:
http://jsonviewer.codeplex.com/releases/view/63839[^]

In first case, you can look into code and have an idea how JSON viewer is doing formatting as it is open source and code is available at:
http://jsonviewer.codeplex.com/SourceControl/latest#Readme.txt[^]

Hope those would help. Thanks.


尝试使用 JSON.NET [ ^ ]序列化程序,它支持JSON格式化



try with JSON.NET[^] serializer, it supports JSON formatting

string json= JsonConvert.SerializeObject(rows, Formatting.Indented);



你可以安装此套餐通过 Nuget [ ^ ]


这篇关于如何在C#中生成格式化的Json的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆