添加到JSON服务器端的逗号使JSON在JavaScript中无法读取
我正在创建一个JSON对象,如下所示:添加到JSON服务器端的逗号使JSON在JavaScript中无法读取,javascript,c#,json,parsing,Javascript,C#,Json,Parsing,我正在创建一个JSON对象,如下所示: public class JsonObject { public string dataCLTotalCount { get; set; } public string dataCCTotalCount { get; set; } } var Temporary = (from DataItem in DataSource_.Cast<object>() select new JsonObject {
public class JsonObject
{
public string dataCLTotalCount { get; set; }
public string dataCCTotalCount { get; set; }
}
var Temporary = (from DataItem in DataSource_.Cast<object>()
select new JsonObject
{
dataCCTotalCount = string.Format("{0:n0}", ((long)GetPropertyValue(DataItem, "DataCCTotalCount"))),
dataCLTotalCount = string.Format ("{0:n0}", ((long)GetPropertyValue(DataItem, "DataCLTotalCount")))
}).ToList();
var serialized = new JavaScriptSerializer().Serialize(Temporary);
return serialized;
公共类JsonObject
{
公共字符串dataCLTotalCount{get;set;}
公共字符串dataCCTotalCount{get;set;}
}
var Temporary=(来自DataSource.Cast()中的DataItem)
选择新JsonObject
{
dataCCTotalCount=string.Format(“{0:n0}”,((长)GetPropertyValue(DataItem,“dataCCTotalCount”)),
dataCLTotalCount=string.Format(“{0:n0}”,((长)GetPropertyValue(DataItem,“dataCLTotalCount”))
}).ToList();
var serialized=new JavaScriptSerializer().Serialize(临时);
返回序列化;
当我尝试使用客户端代码(JS)运行JSON时,逗号使其无法读取,从而阻止图形显示数据
是string.Format(“{0:n0},…)
造成的吗
谢谢问题可能是您在使用
string.Format
时没有指定cultureinfo。这意味着它将采用服务器上配置的任何区域性,并且您的服务器使用的语言正好是十进制分隔符为逗号的语言
您可以在字符串中指定InvariantCulture
。格式如下:
String.Format(
CultureInfo.InvariantCulture,
"{0:n0}",
(long)GetPropertyValue(DataItem, "DataCCTotalCount"));
它应该可以解决这个问题
编辑:从你的评论中没有意识到它添加了千的分隔符。添加不变量文化并不能解决这个问题。您应该指定除“N”(数字)之外的其他数字格式。在您的案例中,您可能应该使用“F”作为固定点:
String.Format(
CultureInfo.InvariantCulture,
"{0:F0}",
(long)GetPropertyValue(DataItem, "DataCCTotalCount"));
JavaScriptSerializer
的全部要点是为您正确序列化许多对象类型;要获得有效的JSON数字,您不需要自己的字符串转换;您甚至不需要强制转换(long)
,因为序列化程序将使用反射确定类型
这也意味着您可以删除中间的JsonObject
类,并使用匿名类型
var Temporary = (from DataItem in DataSource_.Cast<object>()
select new
{
dataCCTotalCount = GetPropertyValue(DataItem, "DataCCTotalCount"),
dataCLTotalCount = GetPropertyValue(DataItem, "DataCLTotalCount")
}).ToList();
var Temporary=(来自DataSource.Cast()中的DataItem)
选择新的
{
dataCCTotalCount=GetPropertyValue(DataItem,“dataCCTotalCount”),
dataCLTotalCount=GetPropertyValue(DataItem,“dataCLTotalCount”)
}).ToList();
是分隔数值小数部分的逗号吗?@Gimly:是的,像123454
是123454
。为什么不将其序列化为原始数值并格式化以供显示?@Lee Willis:Requirements,不是我:),是它们……既然这些值是字符串,逗号应该可以。你能展示一个你从中得到的JSON示例吗?“{0:F0}”
不会为我创建逗号,只是{0:n0}
是的,这就是我的意思。{0:n0}定义要使用“数字”格式格式化输出,该格式具有数千个分隔符(在区域性中是逗号)。F没有。那么它能解决你的问题吗?检查这里的格式列表:不,它不。。。你知道怎么解决吗?如果你把“{0:F0}”放进去,你就没有逗号了,但是你的JSon仍然是无效的?如果我用{0:F0}
我的JSon是有效的,但是没有逗号