我有一个第三方api,我需要测试它,并需要确保返回的值与响应中发送的值完全相同。例如,如果一个数字返回为1.000,则它需要为1.000而不是1。
我尝试过将字符串响应反序列化为JObject,并将值选择到JToken中,但下面obj1.n2的值最终为1。我几乎想将特定路径上的原始值选择为字符串,而不考虑类型。
有没有办法使用Json。Net I可以从下面示例的字符串表示中选择obj1.n2,并保留后面的零?
例如:
{"obj1":[{"n1":"n〃;,"n2":1.000,"n3〃:真的},{"n1":"n〃;,"n2":10.000,"n3〃:虚假的}]}
因为C#十进制类型保留尾随零,所以您可以直接指示Json。Net将数字解析为小数而不是浮点。将FloatParseHandling
设置为FloatParseHandling.Decimal
,如下所示:
var json = @"{ ""obj1"": [{ ""n1"": ""n"", ""n2"": 1.000, ""n3"": true }, { ""n1"": ""n"", ""n2"": 10.000, ""n3"": false }] }";
var token = JsonConvert.DeserializeObject<JToken>(
json,
new JsonSerializerSettings { FloatParseHandling = FloatParseHandling.Decimal });
token["obj1"][0]["n2"]
现在将显示1.000
而不是1
。