为何F# JSON类型提供者返回的字符串被额外双引号包裹?
F# JSON类型提供者:提取BooleanOrString字段的字符串值(避免双引号问题)
当你用F# JSON类型提供者解析出BooleanOrString类型的value字段时,直接调用ToString()会得到带两对双引号的结果——这是因为该类型的默认ToString()会输出JSON格式的字符串表示。不用靠修剪处理,有两种更靠谱的方式:
模式匹配(推荐,类型安全)
利用F#的模式匹配直接区分布尔和字符串分支,直接拿到原始字符串:match json.Value with | BooleanOrString.String rawStr -> rawStr // 这里的rawStr就是不带额外引号的原始值 | BooleanOrString.Boolean boolVal -> boolVal.ToString() // 处理布尔值的情况直接访问类型属性
BooleanOrString类型会自动生成对应属性存储原始值,字符串类型的话可以直接取StringValue:// 注意:如果当前value是布尔类型,访问StringValue会抛出异常,建议先判断类型 if json.Value.IsString then let rawStr = json.Value.StringValue
这两种方法都能直接获取到无多余引号的原始字符串,不用再做修剪操作。
内容的提问来源于stack exchange,提问作者Matthew MacFarland
相关产品推荐
相关产品推荐

