C# 检查 JSON 响应中的 !null 和 string.Empty 抛出 FormatException
C# Check for !null and string.Empty on a JSON response throws FormatException
我在一个方法中编写了一个简单的 API 调用,期望得到 JSON 响应...没什么了不起的:
// [API call...]
dynamic responseString = JsonConvert.DeserializeObject(response.Result.Content.ReadAsStringAsync().Result);
item.category = responseString.category;
item.shortDescription = responseString.shortDescription;
item.countryOfManufacture = responseString.manufacturerCountry ?? "DE";
有时 API 中的所有必需参数都不可用...所以我尝试检查 is null
和 is string.Empty
并弹出一个对话框,用户可以在其中输入缺失值...
但是这个:
if (responseString.weight == null ||responseString.weight == string.Empty )
{
DialogArgs args = new DialogArgs();
args.Add("Gewicht");
OnMissingValue?.Invoke(args);
item.weight = args.Get<float>("Gewicht");
}
else
{
item.weight = Convert.ToSingle(responseString.weight) / 1000;
}
或
if (string.IsNullOrEmpty(responseString.weight))
抛出 FormatException。
如果我检查 is null
或 is string.Empty
它就像一个魅力。我知道 ref 和值类型之间的区别,并认为可能存在问题...但是,我想知道为什么它会这样...
提前致谢...对不起我的英语...
马库斯
好的,我明白了... dynamic
描述符就是原因。您必须像这样将其转换为 string:
if (string.IsNullOrEmpty((string)responseString.weight))
...感谢您的努力
马库斯
我在一个方法中编写了一个简单的 API 调用,期望得到 JSON 响应...没什么了不起的:
// [API call...]
dynamic responseString = JsonConvert.DeserializeObject(response.Result.Content.ReadAsStringAsync().Result);
item.category = responseString.category;
item.shortDescription = responseString.shortDescription;
item.countryOfManufacture = responseString.manufacturerCountry ?? "DE";
有时 API 中的所有必需参数都不可用...所以我尝试检查 is null
和 is string.Empty
并弹出一个对话框,用户可以在其中输入缺失值...
但是这个:
if (responseString.weight == null ||responseString.weight == string.Empty )
{
DialogArgs args = new DialogArgs();
args.Add("Gewicht");
OnMissingValue?.Invoke(args);
item.weight = args.Get<float>("Gewicht");
}
else
{
item.weight = Convert.ToSingle(responseString.weight) / 1000;
}
或
if (string.IsNullOrEmpty(responseString.weight))
抛出 FormatException。
如果我检查 is null
或 is string.Empty
它就像一个魅力。我知道 ref 和值类型之间的区别,并认为可能存在问题...但是,我想知道为什么它会这样...
提前致谢...对不起我的英语...
马库斯
好的,我明白了... dynamic
描述符就是原因。您必须像这样将其转换为 string:
if (string.IsNullOrEmpty((string)responseString.weight))
...感谢您的努力
马库斯