【问题标题】:How to JSON Data Format JavaScript Serializer in ASP.NET如何在 ASP.NET 中对 JavaScript 序列化程序进行 JSON 数据格式化
【发布时间】:2016-04-21 12:26:53
【问题描述】:

我正在编写一个 ASP.NET Web 服务。我建立了与 SQL Server 的连接。 Web 服务使用 JavaScript 序列化程序。我的 JSON 格式:

[{"ID":1,"TCKN":"19","Adi":"zzz","Soyadi":"aa"},
{"ID":2,"TCKN":"99","Adi":"user","Soyadi":"user"}]

但我想要这种 JSON 格式:

"users": [
    {
            "ID": "1",
            "TCKN": "19",
            "Adi": "zzz",
            "Soyadi": "aa"
    },
    {
            "ID": "2",
            "TCKN": "99",
            "Adi": "user",
            "Soyadi": "user"
    },]

WebServices.cs

  [WebMethod]
public string getTumKullanici()
{
    JavaScriptSerializer jss = new JavaScriptSerializer();
    var json = "";
    var tumKullanicilar = from result in mydb.Kullanicilars
                          select result;

    json = jss.Serialize(tumKullanicilar);

    return json;
}

【问题讨论】:

  • 这是正确的},] 吗?
  • 你需要pretty print吗?还是只是封装users 属性?
  • 如果我的编辑对您有帮助,请告诉我

标签: javascript c# asp.net json javascriptserializer


【解决方案1】:

我的理解是 JSON 的显示方式缺少换行符等 - 这是完全正常和理想的,因为额外的字符对服务毫无用处。为了使 JSON 对人类更具可读性,您可以使用启用格式化的工具,例如 f.e. Notepad++ 或一些 webapp 的插件。但对于作为计算数据的一般用途,我会坚持使用原始格式,而不使用制表符和换行符。

【讨论】:

  • 我只想显示表名。我使用了很多表,所以会出现混乱。
  • 用户和联系人表 "users": [ { "ID": "1", "TCKN": "19", "Adi": "zzz", "Soyadi": "aa" } ]“联系人”:[{“电子邮件”:“s@gmail.com”,“手机”:“538”}]
【解决方案2】:

每当您处理需要序列化为 C# 的 JSON 数据时,请转至 Json2CSharp

使用该站点,我得到了您的 C# 数据模型:

public class RootObject
{
    public int ID { get; set; }
    public string TCKN { get; set; }
    public string Adi { get; set; }
    public string Soyadi { get; set; }
}

接下来你需要JSON.NET

您可以通过打开 nuget 包管理器并搜索 Newtonsoft.Json 来获得它

或使用包管理器控制台

PM> Install-Package Newtonsoft.Json 

接下来您需要反序列化该 JSON..

string json = @"{""ID"":1,""TCKN"":""19"",""Adi"":""zzz"",""Soyadi"":""aa""},{""ID"":2,""TCKN"":""99"",""Adi"":""user"",""Soyadi"":""user""}]";

RootObject root = JsonConvert.DeserializeObject<RootObject>(json);

如果您永远不需要将 C# 对象序列化回 JSON……您可以这样做。

string backToJson = JsonConvert.SerializeObject(root);

编辑

您可以通过将原始对象与另一个类包装来实现嵌套用户:

public class Users
{
    public int ID { get; set; }
    public string TCKN { get; set; }
    public string Adi { get; set; }
    public string Soyadi { get; set; }
}

public class Root
{
    public List<User> Users {get;set;}
}

var root = new Root { Users = mydb.Kullanicilars.ToList() };

JsonConvert.SerializeObject(root);

【讨论】:

  • 我只想显示表名。所以我使用多个表,我可以使用所有表名。当我应用您的示例时会发生这种情况:"[{\"ID\": 1,\"TCKN\":\"19,\"Adi\":\"zzz\",\"Soyadi\":\"aaa\",\"}]"
  • 用户和联系人表 "users": [ { "ID": "1", "TCKN": "19", "Adi": "zzz", "Soyadi": "aa" } ]“联系人”:[{“电子邮件”:“s@gmail.com”,“手机”:“538”}]
猜你喜欢
  • 1970-01-01
  • 2017-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-17
  • 1970-01-01
相关资源
最近更新 更多