如何用c#解析JavaScript代码/数组

时间:2016-09-16 17:37:55

标签: javascript c# arrays json

我收到了javascript文件的网络请求。作为回复,我尝试使用C#解析 JavaScript-Snippet

Snippet看起来像这样:

sDt[1647110]=['SVK U19 A','D43A71','Jupie Podlavice Badin(U19)','TJ Straza(U19)','','',' / '
,'','',114745,114746,1,'',0,0,0,1012,1,'','',''];sDt[1647108]=['SVK U19 A','D43A71','Kysucke Nove Mesto(U19)',
'MFK Lokomotiva Zvolen(U19)','','',' / ','','',114741,114742,1,'',0,0,0,1012,1,'','',''];
sDt[1647109]=['SVK U19 A', /* A lot of more of that kind followed by */ ;WLID[1623901]=1;
WLID[1623902]=1;WLID[1623903]=1;WLID[1637686]=1;
WLID[1637692]=1;WLID[1637687]=1;WLID[1637688]=1;WLID[1637685]= /* ending with */ 
var ORD = [1647110,1647108,1647109,1647133,1645669,1647122,1626152,1647251,1646643,
1647130,1646685,1 ... ];

显然,这不是纯JSON数组。现在我想知道如何最有效地解析这个问题。首先,我开始按照每个pedes进行此操作,这意味着使用String.Split等等。但这很慢,不幸的是不是很稳定。

虽然每个sDt[Idendifier]=后面的部分是一个我可以用 Json.Net 解析的数组,但我还需要Idendifier。我可以忽略其他所有内容,例如WLIDvar ORD

有没有人知道如何有效地做到这一点?

提前致谢

1 个答案:

答案 0 :(得分:0)

如果您没有任何其他信息,则必须通过令牌完成整个请求令牌。没有别的办法了。 为什么不发送JSON?

但要解析它我会做以下事情: 完成整个请求。 如果你遇到过' ['确保检查你是否不在字符串中。 (例如,当您偶然发现"'并且如果您来到下一个"')时设置一个标记。 如果您现在没有解析字符串,则以下标记是标识符或内容。你可以轻松检查。 如果是数字,这是您的标识符,直到您达到"]" (并且鉴于您目前尚未解析字符串)。 在另一种情况下,它是您现在可以使用Json.Net解析的内容,只需记住第一个" ["和以下"]"是,你可以生成一个子串,然后你可以传递给Json.Net。 如果你遇到一个&#34 ;;"并且您不在字符串中,请确保跳过WLID和ORD部分。

整个操作需要O(n * m),其中n =令牌数,m =最长内容串的长度。

如果您自己解析内容(而不是让Json.Net为您做这件事),您当然可以将其缩小到O(n)。