繁体   English   中英

将JavaScript集合声明代码转换为相应的C#代码

[英]Convert JavaScript collection declaration code to corresponding C# code

我正在开发使用Web API调用的Windows Phone应用。 大部分调用都返回JSON字符串,但其中之一返回以下代码行:

var buyPrice=[[Date.UTC(2012,0,9),385.250000], [Date.UTC(2012,0,10),386.250000], [Date.UTC(2012,0,11),387.000000]];

似乎上面提到的代码行是JavaScript集合的常规声明。 这确实意味着我无法将其解析为JSON,而且其中包含一个单词

“ var buyPrice =”

也无法解析。

因此,我需要将上述集合转换为相应的C#数组/集合,但不确定是否能够做到这一点。

是否可以通过使用C#功能来做到这一点,或者我需要一些第三方库?

没有外部库(我对此类任务一无所知),可以使用Regex

var input = "var buyPrice=[[Date.UTC(2012,0,9),385.250000], [Date.UTC(2012,0,10),386.250000], [Date.UTC(2012,0,11),387.000000]];"

var regex = @"\[Date.UTC\((?<year>\d{4}),(?<month>\d{1,2}),(?<day>\d{1,2})\),(?<price>\d+(\.\d+)?)]";

var matches = Regex.Matches(input, regex)
                   .OfType<Match>()
                   .Select(m => new
                       {
                           Date = new DateTime(
                               Int32.Parse(m.Groups["year"].Value),
                               Int32.Parse(m.Groups["month"].Value) + 1,
                               Int32.Parse(m.Groups["day"].Value)
                           ),
                           Price = Decimal.Parse(m.Groups["price"].Value)
                       });

由于Date.UTC从0开始需要一个月 ,因此您必须添加一个。 根据您的输入,这将返回三个具有Datetime Datedecimal Price属性的匿名对象。

请注意,此Regex不会尝试验证输入(月份和日期00-99有效),但这是一个很好的起点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM