我正在编写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;
}
答案 0 :(得分:0)
每当您处理需要序列化为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);
答案 1 :(得分:0)
我的理解是,显示JSON的方式缺少新的行字符等 - 这是完全正常和期望的,因为额外的字符对于服务是无用的。为了使JSON对人类更具可读性,您可以使用支持格式化的工具,如f.e.添加到Notepad ++或一些webapp。但是作为计算中的数据的一般用途,我会坚持使用原始格式而不使用制表符和新行。