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

本文关键字:代码 数组 JavaScript 解析 何用 | 更新日期: 2023-09-27 18:07:14

我有一个web请求到javascript文件。作为回应,我已经JavaScript-Snippet,我正试图在c#中解析。

代码片段如下:

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数组。现在我想知道如何最有效地解析它。首先,我开始使用String.Split之类的工具。但这是缓慢的,不幸的是不是很稳定。

而每个sDt[Idendifier]=背后的部分是一个数组,我可以用Json解析。Net我还需要Idendifier。像WLIDvar ORD这样的所有东西我都可以忽略。

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

Thanks in advance

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

如果没有任何其他信息,则必须逐个令牌遍历整个请求。没有别的办法了。为什么不直接发送JSON呢?

但是要解析它,我将执行以下操作:浏览整个请求。如果你遇到'['一定要检查你是不是在字符串中。(例如,当你遇到一个"时设置一个标志,当你遇到下一个"时取消设置)。如果您现在没有解析字符串,那么以下标记要么是标识符,要么是内容。你可以很容易地检查一下。在数字的情况下,这是你的标识符,直到你达到"]"(并且假设你目前没有解析字符串)。另一种情况是可以用Json解析的内容。现在,只要记住(索引)第一个"["和后面的"]"在哪里,就可以生成一个子字符串,然后将其传递给Json.Net。如果您遇到";",并且您不在字符串中,请确保跳过WLID和ORD部分。

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

如果您自己对内容进行解析(并且不让Json。你可以把范围缩小到0 (n)