【发布时间】:2019-07-17 02:16:30
【问题描述】:
我正在将数据从 SQL 数据库序列化为 JSON,我如何仅序列化没有字符串名称的值或在反序列化之前修剪序列化 JSON 的函数。
我阅读了有关 ScriptIgnoreAttribute 的信息,但没有看到如何将它与我想做的事情联系起来
原始 JSON
[
{
"CODE": "AF",
"TOTALVALUE": "$23,554,857.27"
},
{
"CODE": "AS",
"TOTALVALUE": "$38,379,964.65"
},
{
"CODE": "SG",
"TOTALVALUE": "$24,134,283.47"
}
]
所需的 JSON
[
{
"AF": "$23,554,857.27"
},
{
"AS": "$38,379,964.65"
},
{
"SG": "$24,134,283.47"
}
]
SQL 视图结构
My SQL 查询返回数据
SELECT [CODE],[TOTALVALUE] FROM [dbo].[vw_BuyersByCountryValue]
enter code here
ASP.NET 中的序列化代码
[WebMethod]
public void GetBuyersByCountryValue()
{
using (PMMCEntities ctx = new PMMCEntities())
{
ctx.Configuration.ProxyCreationEnabled = false;
var qry = ctx.vw_BuyersByCountryValue.ToList();
var js = new JavaScriptSerializer();
string strResponse = js.Serialize(qry);
Context.Response.Clear();
Context.Response.ContentType = "application/json";
Context.Response.AddHeader("content-length", strResponse.Length.ToString(CultureInfo.InvariantCulture));
Context.Response.Flush();
Context.Response.Write(strResponse);
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
}
【问题讨论】:
-
请添加代码。请参阅:minimal reproducible example。
-
这篇文章的标题包含“忽略”这个词。如果这不是你的意图,我建议纠正它以吸引更好的答案
-
我的 2c 建议在这里 - JavaScriptSerializer 除了编写自定义 JavaScriptConverter 之外,无法重命名用于序列化的属性。这个序列化器非常简单;它支持的唯一序列化属性是 ScriptIgnore,用于抑制属性的序列化。尝试其他库以获得您想要的。
-
请分享用于获取数据的 SQL 脚本。它可以在转换为 JSON 之前进行转换。
标签: c# asp.net json sql-server-2012