将数组从Javascript传递到C#
我有一个包含数组的.js脚本: js的输出如下所示:将数组从Javascript传递到C#,c#,javascript,arrays,C#,Javascript,Arrays,我有一个包含数组的.js脚本: js的输出如下所示: var foo= [ { "bar1":"value1", "bar2":"value2" // And so on... } ] 我无法访问js源代码,因此无法作为JSON输出并反序列化 我只能用 WebClient < /COD>获取字符串,但是如何解析它并创建数组/字典并在C中工作? < P>您应该考虑调用 WebCclipse。然后使用JSON.
var foo=
[
{
"bar1":"value1",
"bar2":"value2"
// And so on...
}
]
我无法访问js源代码,因此无法作为JSON输出并反序列化
我只能用<代码> WebClient < /COD>获取字符串,但是如何解析它并创建数组/字典并在C中工作?
< P>您应该考虑调用<代码> WebCclipse。然后使用JSON.Net
或其他方法进行解析
根据那边提供的例子
string json = @"{
""Name"": ""Apple"",
""Expiry"": "2008-12-28T00:00:00",
""Price"": 3.99,
""Sizes"": [
""Small"",
""Medium"",
""Large""
]
}";
JObject o = JObject.Parse(json);
string name = (string)o["Name"];
// Apple
JArray sizes = (JArray)o["Sizes"];
string smallest = (string)sizes[0];
// Small
var foo=new JavaScriptSerializer()。反序列化(YourString)代码>您可以使用来反序列化该字符串:
string str=
@"var foo =
[
{
""bar1"":""value1"",
""bar2"":""value2""
}
]";
JavaScriptSerializer js = new JavaScriptSerializer();
var o = js.Deserialize<Dictionary<string,string>[]>(str.Substring(str.IndexOf('[')));
string str=
@“var foo=
[
{
“bar1”:“value1”,
“bar2”:“value2”
}
]";
JavaScriptSerializer js=新的JavaScriptSerializer();
var o=js.Deserialize(str.Substring(str.IndexOf('[')));
结果:
Dictionary<String,String> (2 items)
Key Value
------ --------
bar1 value1
bar2 value2
字典(2项)
关键值
------ --------
bar1值1
bar2值2
我相信你能做到这一点:var foo=newJavaScriptSerializer()。反序列化(你的字符串);
你从WebClient
得到的字符串是什么?因为你询问如何解析它,但没有显示它。@I4V字符串是js的输出。与我写的一模一样。@WiS3字符串以“var foo=”开头或者这就是JavaScript中的设置方式?@DStanley字符串以“var foo…”开头,它是纯文本,就像读a.txt.D Stanley一样,我期待这个答案:)但是JavaScript不能用json解析器解析。假设一行像“bar3”:Math.max(a,b)
@I4V提供的示例没有嵌入代码-我已经用提供的示例测试了我的答案,它是有效的。D Stanley,我知道它是有效的,我只是说,OP正在尝试做一些错误的事情,您的答案适用于发布的示例(非常原始的字符串OP,能够将其传递给json解析器).您对此有何看法?我有一个包含数组的.js脚本:
。您是否希望您的答案适用于每个包含数组的js
?