[英]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 Date
和decimal Price
属性的匿名对象。
请注意,此Regex不会尝试验证输入(月份和日期00-99有效),但这是一个很好的起点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.