繁体   English   中英

无法隐式地将类型“string”转换为“bool” JSON

[英]Cannot implicently convert type 'string' to 'bool' JSON

您好,我需要帮助从 Object 列表中找到一个值,该列表是我从一个 JSON 文件创建的:

JSON 结构:

{
    "mp": "1",
    "mpuus": [
      {
        "id": "100",
        "tpuus": [
          "000000001",
          "000000002"
        ]
      },
      {
        "id": "101",
        "tpuus": [
          "00000003"
        ]
      }
    ]
  },
  {
    "mp": "2",
    "mpuus": [
      {
        "id": "200",
        "tpuus": [
          "0000004"
        ]
      }
    ]
  },

我将 JSON 转换为

 RootMedicationMapping object.
List<rootMedicationMapping> = JsonHandler.DeserializeJasonArrayFromFile<RootMedicationMapping>(@"JSON File PATH");

我想通过 tpuu 值搜索rootMedicationMapping列表并获取 mp 值。

例如,我传递的值是 tpuu = 000000002,我想取回 mp 值(在本例中为 1)

这是在尝试以下语法,但它让我失望

'不能隐含地将类型'string'转换为'bool'

var mpId= rootMedicationMapping.Find(x => x.MPUUs.Find(y=>y.Tpuus.Find(z=>z.Equals("tpuu value"))));

List.Find(Predicate)的参数需要是一个Predicate ,它是一个委托,它接受您正在搜索的 object 的一个实例,并期望返回一个布尔值,指定 object 是否匹配。 目前,在内部 Find 调用的 Predicate 中,您只是返回另一个 Find 调用的结果,这是一个字符串而不是预期的bool ,导致您看到的错误。

要解决此问题,您只需确保谓词 arguments 返回 bool。 使用您所拥有的,您只需添加检查内部 Find 调用是否返回null

var mpId = 
    rootMedicationMapping.Find(x => 
        x.MPUUs.Find(y => 
            y.Tpuus.Find(z => 
                z.Equals("tpuu value")) != null) != null)?.mp;

您也可以使用 LINQ 编写此代码,从而允许Any处理 null 检查:

var mpId = 
    rootMedicationMapping.FirstOrDefault(x => 
        x.MPUUs.Any(y => 
            y.Tpuus.Any(z => 
                z.Equals("tpuu value"))))?.mp;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM