为什么要将JSon字符串求值为不同的值

  • 本文关键字:JSon 字符串 c# json.net
  • 更新时间 :
  • 英文 :


这是我在这里的第一篇文章,如果我不够详细,请告诉我。

我使用Newtonsoft.JSON来处理一个JSON字符串。我以前从未遇到过JSON和/或Newtonsoft.JSON的问题,在我当前的项目中,它基本上按预期工作。但有时它会产生意外的错误。

我一直在竭尽全力寻找解决方案,但这似乎很模糊——我一直没能找到一个似乎有模糊关联的问题/解决方案。

这是一个简化版本。。。我使用的JSON字符串是这样的(下面示例中的jsonResponse):d={"count":1,"result":[{"CarID":31888,"CarName":"My Awesome Car","Year":"1923","Colour":"灰绿色","SomethingInterest":"m","OtherStuff":"more detail","Status":"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"。当这个问题发生时,如果我在visualstudio中"观察"变量,car。SomethingInterest="m",但分配给c.Something Interest的是"109'm'">

所以,经过评估,我c.Something有趣=汽车。有趣的事;变成"109'm'"="m">

它总是在同一行(字符串)上失败,但"SomethingInterest"的相同值可能与之前没有问题的行相同。

这可能是怎么发生的/为什么发生的?它只是一个纯文本JSON字符串。为什么有时这只是一个问题?"109"是从哪里来的?

我做不出来。希望有人能够提供一些见解。感谢

感谢大家的帮助。原来这一直都是转移注意力。我的c.SomethingInterest被声明为char,所以109是"m"的ascii值,它显示在"watch"中。我的实际问题完全无关,但我仔细研究了一下,因为"这看起来很奇怪",我认为这是我的问题。我想是深夜编码的陷阱。

相关内容

  • 没有找到相关文章

最新更新