我发现了这个F# JSON parsing - How to get property using complex path (consisting of several propery names)(我缩短了文件字符串)。我想知道如何在FSI窗口中显示json文件中的实际数据?
let soilTest = JsonValue.Load("c:\\,,,soiltest.json")
let query soilTest=
let node = JObject.Parse soilTest
node.SelectToken "person[0].name" |> string
以下是json文件的开头:
{
"person": [
{
"name": "John Doe",
"date": "December 1, 2015",
.....
我查看了Mark Seemann提供的链接,以了解如何从json文件中获取数据并显示在控制台中。
但是当放
Console.WriteLine(name)
我收到了这个警告:
warning FS0020: This expression should have type 'unit', but has type 'string'. Use 'ignore' to discard the result of the expression, or 'let' to bind the result to a name.
val query : soilTest:string -> unit
尝试|>在console.writeline的末尾忽略,我得到val查询:soulTest:string - >单元
如何从这一点开始使用let语句将数据绑定到它?
答案 0 :(得分:4)
soilTest
属于JsonValue
类型,但您尝试将其解析为string
,因此出现错误。请调整您的环境路径,否则这对我有用:
let soilTest = JsonValue.Load(@"c:\tmp\test.json")
let qry (soilTest:JsonValue) =
let data = JObject.Parse (soilTest.ToString())
data.SelectToken "person[0].name" |> string
qry soilTest
//val it : string = "John Doe"
可能有更好的方法可以使用。 Json和xml是我存在的祸根......
修改,例如您可以直接访问属性,如下所示:
let soilTest = JsonValue.Load(@"c:\tmp\test.json")
soilTest.["person"].[0].["name"].AsString()
//val it : string = "John Doe"