2016-09-16 9 views
0

javascriptファイルへのWebリクエストがあります。応答として私はJavaScriptのスニペット私はC#で解析しようとしています。JavaScriptコード/配列を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]=の背後にあるパートは私がまたIdendifierが必要Json.Netで解析できアレイですが。他のすべてはWLIDvar ORDのように無視できます。

これを効率的に行う方法を知っている人はいますか?

おかげで、事前

+0

C#で解析する必要がありますか?この問題を回避するにはより良い方法があるようです。 –

+0

この機能をホストするアプリケーションは、C#で書かれています。あなたの意見には何がありますか? – lichtbringer

+1

まあ、理論的には、あなたのC#で処理するAPIエンドポイントにjsonパケットの実際のjavascript変数を送ることができます。あなたがそのような種類のコントロールを持っているかどうかを知るために、このjavascriptがどこに住んでいるかを伝えるのは難しいです。 –

答えて

0

にあなたが他の情報を持っていない場合は、トークンによって、全体のリクエストトークンを通過する必要があります。周囲に他の方法はありません。 JSONを送信してみませんか?

しかし、それを解析するには、次のようにします。 リクエスト全体を処理します。 文字列にいないかどうか確認してください。 (例えば、 '' 'で遭遇したときにフラグを設定し、次の' ''に来るときにはそれを解除することによって)。 文字列を現在解析していない場合、次のトークンは識別子または内容のいずれかです。あなたはそれを簡単にチェックすることができます。 数字の場合、これは "]"に達するまで(そしてあなたが現在の文字列を解析していなければ)あなたの識別子です。 もう1つのケースでは、Json.Netと解析できるコンテンツです。最初の "["と "]"がどこのインデックス(インデックス)であるかを覚えておいて、Jsonに渡すことができる部分文字列を生成できます。ネット。 ";"文字列内にない場合は、WLIDとORDの部分をスキップするようにしてください。

全体の操作は、n =トークンの数とm =最長コンテンツ文字列の長さでO(n * m)を要します。

自分でコンテンツの解析を行い(Json.Netにはそうしない)、もちろんO(n)に絞り込むことができます。

+0

残念ながら私はJavaScriptを変更できません。だから私は私が得ているものに対処しなければならない。私はあなたが上で説明していることを試してみると思います。実際にはJSON.NETの部分の横に、これは多かれ少なかれ私がすでにやっていることです。 – lichtbringer

関連する問題