Converting a dataset to JSON using .NET 3.5 in C#

2019-01-26 11:21发布

I have been searching for a simple way to convert a dataset from a PostgreSQL database to JSON for use in a project that I am building.

This is my first time using JSON, and I have found it really tricky to find a simple way of doing this. I have been using a StringBuilder at the moment to create a JSON string from the information in the dataset, but I have heard that it is possible to do this very simply with .NET 3.5 using the System.Runtime.Serialization namespace, though I have yet to find a simple article or blog on how this is done! What is the easiest way to do this?

4条回答
我只想做你的唯一
2楼-- · 2019-01-26 12:03

Use Newtonsofts Json.Net and check out DataTable JSON Serialization in JSON.NET and JavaScriptSerializer where it's used to create a DataSet-to-JSON converter.

查看更多
Melony?
3楼-- · 2019-01-26 12:12

For others looking at this topic:

Here is the simplest way to convert a dataset to a JSON array as json_encode (PHP) does with ASP.Net:

using Newtonsoft.Json;

public static string ds2json(DataSet ds) {
    return JsonConvert.SerializeObject(ds, Formatting.Indented);
}
查看更多
放荡不羁爱自由
4楼-- · 2019-01-26 12:17

Maybe you've heard about the system.runtime.serialization.json namespace in the newly announced .NET Framework 4.0.

查看更多
疯言疯语
5楼-- · 2019-01-26 12:19
public static string GetJSONString(DataTable Dt)
{
    string[] StrDc = new string[Dt.Columns.Count];
    string HeadStr = string.Empty;

    for (int i = 0; i < Dt.Columns.Count; i++)
    {
        StrDc[i] = Dt.Columns[i].Caption;
        HeadStr += "\"" + StrDc[i] + "\" : \"" + StrDc[i] + i.ToString() + "¾" + "\",";
    }

    HeadStr = HeadStr.Substring(0, HeadStr.Length - 1);

    StringBuilder Sb = new StringBuilder();
    Sb.Append("{\"" + Dt.TableName + "\" : [");

    for (int i = 0; i < Dt.Rows.Count; i++)
    {
        string TempStr = HeadStr;
        Sb.Append("{");

        for (int j = 0; j < Dt.Columns.Count; j++)
        {
            TempStr = TempStr.Replace(Dt.Columns[j] + j.ToString() + "¾", Dt.Rows[i][j].ToString());
        }
        Sb.Append(TempStr + "},");
    }

    Sb = new StringBuilder(Sb.ToString().Substring(0, Sb.ToString().Length - 1));
    Sb.Append("]}");

    return Sb.ToString();
}
查看更多
登录 后发表回答