这是我在这里的第一篇文章,所以如果我不够详细 - 请告诉我。
我使用Newtonsoft.JSON处理JSON字符串。我之前没有遇到过JSON和/或Newtonsoft.JSON的问题,在我目前的项目中,它大部分都按预期工作。但有时会产生意外错误。
我一直在试图找到一个解决方案,但看起来很晦涩 - 我还没有找到一个看起来甚至模糊不清的问题/解决方案。
这是一个简化版本...... 我使用的JSON字符串是这个(下例中的jsonResponse): d = {"计数":1,"导致":[{" CarID":31888" CarName":"我的令人敬畏的汽车","年":" 1923","颜色":"柠檬绿"," SomethingInteresting&#34 ;:" m"," OtherStuff":"更多细节","状态":" Buggered"}]}
以下是我使用的代码:
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());
}
大部分时间它工作得很好。但偶尔会失败,我无法解决原因。
这是“有趣的事情”。值。 在此示例中,值为" m"。 出现此问题时,如果我"观看"视觉工作室中的变量,car.SomethingInteresting =" m",但c.SomethingInteresting的分配是" 109''"
所以,评价,我的 c.SomethingInteresting = car.SomethingInteresting; 变 " 109' m'" =" m"
它始终在同一行(字符串)上失败,但是相同的值为“SomethingInteresting'对于没有问题的先前行可能是相同的。
这是怎么回事? 它只是一个纯文本JSON字符串。为什么这有时只是一个问题? " 109"" 109"来自?
我无法解决这个问题。希望有人能够提供一些见解。 感谢
答案 0 :(得分:0)
感谢大家的帮助。原来它一直是红鲱鱼。我的c.SomethingInteresting被声明为char,所以109是'm'的ascii值,它在“watch”中显示。我的实际问题完全不相关,但我对此进行了磨练,因为“看起来很奇怪”,我认为这是我的问题。我想是深夜编码的陷阱。