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 nullis string.Empty 它就像一个魅力。我知道 ref 和值类型之间的区别,并认为可能存在问题...但是,我想知道为什么它会这样...

提前致谢...对不起我的英语...

马库斯

好的,我明白了... dynamic 描述符就是原因。您必须像这样将其转换为 string

if (string.IsNullOrEmpty((string)responseString.weight))

...感谢您的努力

马库斯