将 C# 中 json 上的变量值与字符串进行比较
Comparing the value of a variable on json in C# to a string
我正在使用 google API 来获取两个地点之间的距离并检查我是否获得了距离信息 json 响应中有一个状态字段 API 可以读取 "OK" 或 "NOT_AVAILABLE" 或类似的内容。我想检查状态是否正常,这样我就可以使用距离信息,所以我这样做了
if (disJSON["rows"][0]["elements"][0]["status"] == "OK")
问题是它 returns 每次都是假的,即使状态正常
我查看了调试器以检查值,调试器为 json 的上述元素显示的值是“\"OK\"”。这很奇怪。所以我用它作为 if 语句的比较字符串,像这样
if (disJSON["rows"][0]["elements"][0]["status"] == "\"OK\"")
但它也一直 returns 错误。有什么想法可以正确比较吗?
我怀疑问题是 disJSON["rows"][0]["elements"][0]["status"]
的编译时类型是 JToken
或类似的东西。如果您转换为字符串,则 a) 您将比较一个字符串和一个字符串; b) 编译器将使用 bool ==(string, string)
重载而不是比较引用标识:
string status = (string) disJSON["rows"][0]["elements"][0]["status"];
if (status == "OK")
{
...
}
我正在使用 google API 来获取两个地点之间的距离并检查我是否获得了距离信息 json 响应中有一个状态字段 API 可以读取 "OK" 或 "NOT_AVAILABLE" 或类似的内容。我想检查状态是否正常,这样我就可以使用距离信息,所以我这样做了
if (disJSON["rows"][0]["elements"][0]["status"] == "OK")
问题是它 returns 每次都是假的,即使状态正常
我查看了调试器以检查值,调试器为 json 的上述元素显示的值是“\"OK\"”。这很奇怪。所以我用它作为 if 语句的比较字符串,像这样
if (disJSON["rows"][0]["elements"][0]["status"] == "\"OK\"")
但它也一直 returns 错误。有什么想法可以正确比较吗?
我怀疑问题是 disJSON["rows"][0]["elements"][0]["status"]
的编译时类型是 JToken
或类似的东西。如果您转换为字符串,则 a) 您将比较一个字符串和一个字符串; b) 编译器将使用 bool ==(string, string)
重载而不是比较引用标识:
string status = (string) disJSON["rows"][0]["elements"][0]["status"];
if (status == "OK")
{
...
}