gpt4 book ai didi

json - 将Json信息转换成F#列表

转载 作者:行者123 更新时间:2023-12-05 09:24:51 24 4
gpt4 key购买 nike

我正在发现 Json 文件,我想创建一个 F# 代码来读取以下 Json 文件(从 Facebook connect 中提取)并将数据放入 F# 列表中,如本例所示:["id"; “姓名”;“名字”;“姓氏”;“链接”;“用户名”;“生日”;“性别”]。你有什么想法 ?我不是这方面的专家,如果您对此有所了解,那将对我很有帮助

Json 文件:

{
"id": "6234306",
"name": "Katter Maxime",
"first_name": "Katter",
"last_name": "Maxime",
"link": "http://www.facebook.com/katter.maxime",
"username": "katter.maxime",
"birthday": "11/10/1982",
"work": [
{
"employer": {
"id": "10164958321",
"name": "Bedur"
},
"position": {
"id": "14014810602",
"name": "student"
},
"start_date": "0000-00",
"end_date": "0000-00"
}
],
"education": [
{
"school": {
"id": "107990348",
"name": "AAAAAAAA"
},
"year": {
"id": "1406175699",
"name": "2007"
},
"type": "Graduate School"
}
],
"gender": "male",
"locale": "en_US",
"updated_time": "2011-11-03T17:31:04+0000",
"type": "user"
}

最佳答案

jsonKeys.fsx:

#r "System.Web.Extensions.dll"

open System
open System.IO
open System.Collections.Generic
open System.Web.Script.Serialization

let _ =
let jsonStr = File.ReadAllText "json.txt"
let jss = new JavaScriptSerializer();
let dic = jss.DeserializeObject(jsonStr) :?> Dictionary<string, obj>
let keyList = dic.Keys |> Seq.toList
printfn "%A" keyList

演示

>fsi jsonKeys.fsx
["id"; "name"; "first_name"; "last_name"; "link"; "username"; "birthday"; "work";
"education"; "gender"; "locale"; "updated_time"; "type"]

添加类似输入的大小写

{"data":[{"id":"902395","name":"Thomas Girba"},{"id":"194589","name":"Durand Gure"},..]}


let listToTuple [x;y] = (string x, string y)
let _ =
let jsonStr = File.ReadAllText "json2.txt"
let jss = new JavaScriptSerializer();
let dic = jss.DeserializeObject(jsonStr) :?> Dictionary<string, obj>
let data = dic.["data"] :?> obj []
(*
let result =
data
|> Array.map (fun x -> (x :?> Dictionary<string,obj>).Keys |> Seq.toList |> listToTuple)
printfn "%A" result //[|("id", "name"); ("id", "name")|]
*)
let result =
data
|> Array.map (fun x ->
let d = x :?> Dictionary<string,obj>
string d.["id"], string d.["name"] //value
)
printfn "%A" result //[|("902395", "Thomas Girba"); ("194589", "Durand Gure")|]

open Microsoft.FSharp.Reflection
let arrayToTuple (ar: 'a array) =
let len = Array.length ar
let ty = FSharpType.MakeTupleType(Array.create len typeof<'a>)
FSharpValue.MakeTuple(ar, ty)

关于json - 将Json信息转换成F#列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8420558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com