我已经这样做是为了从int,double and string列表构建JavaScript数组。
public string listToJsArray<T>(List<T> cslist)
{
bool numeric = true;
if(
!(typeof(T)==typeof(int)
|| typeof(T) == typeof(string)
|| typeof(T) == typeof(double))
)
{
throw (new ArgumentException(message: "Only int, double and string are supported"));
}
if(typeof(T)==typeof(string))
{
numeric = false;
}
string JsArray = "[";
for(int i=0;i<cslist.Count;i++)
{
string dataWithSurrendings = cslist[i].ToString();
if(!numeric)
{
dataWithSurrendings = "'" + cslist[i].ToString() + "'";
}
if(i !=0)
{
dataWithSurrendings = "," + dataWithSurrendings;
}
if(i +1==cslist.Count)
{
dataWithSurrendings = dataWithSurrendings + "]";
}
JsArray += dataWithSurrendings;
}
return JsArray;
}
我的问题是何时通过字符串列表,撇号变成'
。
例如,{"1","2","3","4","5","6","7"}
的列表变成以下: ['1','2','3','4','1','6','7']
此功能需要进行哪些修改,以返回JavaScript中正确的数组?
没有任何解决方案能够解决问题。使用JSONCONVERT,我的结果几乎相同。问题是查看编辑器中的单个或双引号与CS字符串不同。
我假设您正在这样做将其放入某个地方的网页中,例如:
<script>
@{
var output = listToJsArray(Model.SomeList);
}
var myArray = @Html.Raw(output);
// some Javascript using that array
</script>
不要浪费时间尝试自己做。这是一个痛苦,您正在重新发明轮子。JSON是有效的JavaScript,并且将数组序列化为JSON与JavaScript数组的字样完全相同。因此,请使用JavaScript。json.net在这里确实很有用:
<script>
@{
var output = Newtonsoft.Json.JsonConvert.SerializeObject(Model.SomeList);
}
var myArray = @Html.Raw(output);
// some Javascript using that array
</script>
序列化器将为您处理所有令人讨厌的逃脱,特殊的角色和边缘案例。