2017-01-14 5 views
-1

これは私の最初の投稿です。十分詳細でない場合はお知らせください。JSon文字列を別の値に評価するのはなぜですか?

私は、Newtonsoft.JSONを使用してJSON文字列を処理しています。以前はJSONやNewtonsoft.JSONに問題はありませんでしたが、私の現在のプロジェクトではほとんどが期待通りに動作します。しかし、予期しないエラーが発生することがあります。

私は解決策を見つけようとしていますが、それはかなり不明瞭です。私は曖昧に関連するような問題や解決策を見つけることができませんでした。ここ

が簡略化され...私が使用している JSON文字列は、(以下の例でjsonResponse)本である: D = { "カウント":1、 "結果":[{ "CarID": 31888、「CarName」:「My Awesome Car」、「Year」:「1923」、「Color」:「Lime Green」、「SomethingInteresting」:「m」「OtherStuff」:「詳細」「ステータス」:それだけで正常に動作時間のほとんど

dynamic dynObj = JsonConvert.DeserializeObject(jsonResponse); 

//get rid of annoying root element d 
string d = dynObj.d; 
dynObj = JsonConvert.DeserializeObject(d); 

foreach(var car in dynObj.result) 
{ 
    Car c = new Car(); 
    c.CarID = car.CarID; 
    //other stuff 
    c.SomethingInteresting = car.SomethingInteresting; //this is where it fails (sometimes) 
    //other stuff 

    cars.Add(c); 

    Console.WriteLine(c.ToString()); 

} 

: "Buggered"}]}

はここで私が使用しているコードです。しかし、時には失敗し、なぜ私はうまくいかない。

「SomethingInteresting」の値です。 この例では、値は「m」です。 この問題が発生した場合、私は、car.SomethingInterestingは= "M" Visual Studioでの変数を "観る"、しかしc.SomethingInterestingへの割り当ては、 "109 'はM'"

ので、評価され、私の Cの場合。何か興味深い= car.SomethingInteresting; は、一貫して同じ行(列)に失敗したが、「SomethingInteresting」の同じ値は問題がない前の行について同じであるかもしれない=「M」

「109 『M』」となります。

これはどのようにすることができますか? これはプレーンテキストのJSON文字列です。なぜこれはたまにしか問題にならないのでしょうか? "109"はどこから来たの?

私はそれを解決できません。誰かが洞察力を提供できるかもしれないと願っています。 ありがとう

+0

@ Nkosi彼らはJSONが文字列としてJSONに埋め込まれているので、それらは行います。しかし、実際のJSONをそこに置くべきであり、エスケープのあるバージョンではありません。 –

+2

質問に正確な文字列を入れてください。エスケープ文字が存在しない可能性が最も高い箇所にエスケープ文字を挿入してください。デバッガからコピーしないでください。 –

+0

@SamKuhmonenええ、あなたは正しいです。私はそれがフォーマットされた方法を見てそれを逃した。 – Nkosi

答えて

0

ありがとうございました。それは赤ちゃんだった。私のc.SomethingInterestingはcharと宣言されたので、109は "watch"に表示されていた 'm'のASCII値です。私の実際の問題はまったく無関係でしたが、「それは奇妙に見えます」と私はこれを念頭に置いており、それは私の問題だと思っていました。私が思う深夜コーディングの落とし穴。

関連する問題