我想将此 tablesinJson 转换为 JArray 并循环遍历。
let tablesInJson = (JArray)jsonModel["tables"];
类似于C#的东西
let json = "{
"table": [{
"boolean": true,
"null": null,
"number": 123,
"string": "Hello World"
}]
}"
let ConvertFoo (jsonModel : JObject) (TableInfo : TableInfo list) =
let tablesinJson = jsonModel.["tables"]
//convert tablesinJson into JArray and loop through it
//let tablesInJson = (JArray)jsonModel["tables"]; something like this
printfn "%O" jsonModel.["tables"]
printfn "%O" sqlTableInfos
let _json= JObject.Parse(json)
let list = [TableName "one" ; ColumnName "table"]
ConvertFoo _json list
答案 0 :(得分:3)
一个遍历table
字段中所有对象并打印string
字段的最小示例是:
open Newtonsoft.Json.Linq
let parsed = JObject.Parse(json)
let tables = parsed.["table"] :?> JArray
for table in tables do
let value = table.["string"] :?> JValue
printfn "%O" value
如评论中所述,您需要使用:?>
运算符将对象转换为JArray
(以便可以使用for
对其进行迭代)或{{1 }}(以便您可以访问该值)。
可能值得注意的是,您可以使用F#Data中的Json type provider做同样的事情,并且可以避免所有的转换,因为类型提供程序会推断类型并将所有嵌套数据公开为成员:
JValue