Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
添加到JSON服务器端的逗号使JSON在JavaScript中无法读取_Javascript_C#_Json_Parsing - Fatal编程技术网

添加到JSON服务器端的逗号使JSON在JavaScript中无法读取

添加到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 {

我正在创建一个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
     {                                 
         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是有效的,但是没有逗号