F# ã®JSONäºæ
ç¾æç¹ã§F#ã®JSONäºæ ãã±ã£ã¨æãåºããªãã£ãã®ã§ãç¥ã£ã¦ããç¯å²ã§ã¡ã¢ãã¦ãããã¨ã«ãã¾ãã
ãããããæã£ã¦ããã¨ãç§è¦ã«ã¾ã¿ãã¦ãããã¤æãã¦ããã©ã¤ãã©ãªãããããããã¾ããã
DataContractJsonSerializer
æ¨æºã«ãããã¤ã å½ç¶ãªããF#ã®ããã¤ãã®åã«ã¯å¯¾å¿ãã¦ããªãï¼æå³ããªãåºåã«ãªã£ããã¨ã©ã¼ã«ãªã£ããï¼ï¼ã
ä¸ã¤ã®ããã¸ã§ã¯ãã«éãã¦ãã¦ä»ã®ã©ã¤ãã©ãªã使ãã¾ã§ããªããããå°ããJSONãæ±ãããæã«ä½¿ããï¼ FSDNã¯ã¾ãã«ãããªJSONã ã£ãã®ã§ããã¤ãæ¡ç¨ãã¦ãã¾ãã
*** 追è¨
æ¡å¼µãç¨æãã¦ãããã°ãã¡ããF#ã®åã対å¿ã§ãã¾ãï¼ãã æ¡å¼µã©ã¤ãã©ãªå ¥ãããªãå¥ã®ã©ã¤ãã©ãªãé¸ã¶â¦ï¼ã
ä½è«
Suaveæ¬ä½ã«å«ã¾ãã¦ããSuave.Json
ã¢ã¸ã¥ã¼ã«ã¯å
é¨ã§DataContractJsonSerializerã使ã£ã¦ãã¾ãã
ä¾å¤ã¯mapJsonWith
颿°ã§ãããã¤ã¯deserializeã¨serializeç¨ã®é¢æ°ã渡ãå½¢ã«ãªã£ã¦ãã¾ãã
ã¤ã¾ããSuaveã§ä»ã®JSONã©ã¤ãã©ãªã使ããããªãmapJsonWith
ãç¨ãã¦åã©ã¤ãã©ãªã®é¢æ°ãä½ãããç´æ¥ãã®ã©ã¤ãã©ãªã使ããã«ãªãã¾ãã
ã¾ããmapJsonWith
ã使ããªãå ´åãã©ã¤ãã©ãªã®å
¥ãæ¿ããæ¥½ã«ãªãããã«ãªã¬ãªã¬Jsonã¢ã¸ã¥ã¼ã«ãä½ãã®ãè¯ãã¨æãã¾ãã
Json.NET
http://www.newtonsoft.com/json
.NETã§JSONã¨ããã°ããã§ãããã¿ãããªãã¤ã§ãã ããããªã©ã¤ãã©ãªããã¬ã¼ã ã¯ã¼ã¯ãããã¤ã使ã£ã¦ããã®ã§å¿ ç¶å©ç¨é »åº¦ãé«ã¾ãã¾ãã
ç´ ã®ç¶æ ã§F#ã®åãã·ãªã¢ã©ã¤ãºããã¨æãã ãã®ã§ãªããã¼ã¿ãåºæ¥ä¸ããã®ã§æ³¨æãå¿ è¦ã§ãã
å人çãªãããããã¨ãããã¤ã使ãå ´åã¯classã.NETæ¨æºã®ãã¼ã¿åã®ã¿ã§åãå®ç¾©ãã¾ããã F#ç¨ã®æ¡å¼µãç¨æããã®ã¯é¢åã ãããã¨ãã£ã¦ä»ã®ã©ã¤ãã©ãªãã¡ã³ããã³ã¹ããã¦ãããã¨ããã¨ãã¼ãâ¦ã¨ãªããããã®ã§ã ã¬ã³ã¼ããlistããã®ä»ããããã使ããªãè¦æãå¿ è¦ã«ãªãã¾ãããã¾ãAPIç¨ã®åã¨å é¨ã§ä½¿ãåã£ã¦å¥ç©ã«ãªããã¡ãªã®ã§å ¥å£åºå£ããããããã«ãªããªãã¨ãããã
FSharpLu.Json
https://www.nuget.org/packages/Microsoft.FSharpLu.Json/
çããMicrosoft organizationã«åå¨ããF#ããã¸ã§ã¯ãã§Json.NETã«ä¾åãã¦ãã¾ãã å卿ã¯èãã
Newtonsoft.Json.FSharp
https://github.com/haf/Newtonsoft.Json.FSharp
Suaveã³ããã¿ã¼ã®Henrik Feldtããä½â¦â¦ã§ããdescriptionã«ä»¥ä¸ã®æ³¨ææ¸ããããã¾ãã
I recommend using Chiron instead of Newtonsoft
ã©ãããå¾è¿°ããChironæ¨ãã®ããã§ãã ä½¿ãæ©ä¼ã¯ãªãã§ãããã
Chiron
https://github.com/xyncro/chiron
Haskellã®Aesonçãªã©ã¤ãã©ãªã§ãã Lensããã¾ãã§ã¤ãã¦ãã¾ãã
ãã£ã¡ç³»ã«æ £ãã¦ãã人ã¯ï¼ã¢ããªã«ãã£ãã¹ã¿ã¤ã«ã使ããã®ã§ï¼ä½¿ããããããããã¾ããããæ £ããªãäººã¯æ¬é ããããªæãã
FSharp.Data
https://github.com/fsharp/FSharp.Data
TypeProviderã®ä¾ã¨ãã¦ããç¥ããã¦ãããã¤ã§ããã åãèªåçæãã¦ãããã®ã¯ããã¤ããããããªãã§ããããï¼JSONã¯å¾ã ã«ãã¦èªåçæãå½¹ç«ã¤ãã¨ã£ã¦ãã¾ããªãæ°ããã¾ããâ¦ï¼ã
è§£æåãã«ä½¿ãã«ã¯å¼·ããã©APIã«ä½¿ãã«ã¯åããªãå°è±¡ãç§ã¯æã£ã¦ãã¾ãï¼ããã¾ã§åäººã®ææ³ã§ãï¼ã
FsPickler.Jsonï¼çªå¤ï¼
https://www.nuget.org/packages/FsPickler.Json/
æ©è½ãã¢ãªã¢ãªãªãã¤ããªã·ãªã¢ã©ã¤ã¶ã®FsPicklerã®JSONãã©ã°ã¤ã³çãªãã¤ã JSONã©ã¤ãã©ãªã¨ããããã§ã¯ãªãã®ã§çªå¤æ±ãã
ããã¥ã¡ã³ãã«ä»¥ä¸ã®è¨è¼ãããã¾ãã
FsPickler is NOT:
ã¾ãããããããã§ãããã
ããã©ã¼ãã³ã¹
ç¥ãã¬ã
ãããéè¦ãªã®ã¯çè§£ãã¦ããã®ã§ãããã£ã½ã©é ããªãéãã¯é度æ°ã«ãªããªãé¨åã§ãã使ããªãâ¦çé¢ç®ã«é度ãå¿ è¦ãªããã¤ããªã·ãªã¢ã©ã¤ã¶ã使ããããªãã
çé¢ç®ã«ä½¿ãã¤ããã®äººã¯è¨æ¸¬ãã¾ãããã
ã¾ã¨ãã¦ããªä½ã
æ£ç´ãSuaveã§JSON APIãçµã¿ç«ã¦ãæã«ãã¤ãã©ã¤ãã©ãªé¸å®ã«æ©ã¾ããã¾ãã ã©ããä¸é·ä¸çããããä»ã®è¨èªã触ã£ã¦ãã身ã¨ãã¦ã¯ãauto deriveãã¤ã¤ããæãã«ä½¿ããã¦ããããã¿ãããªæ°åã«ãªãããã§ããã
ä¸å¿å人çãªä½¿ãåããæ¸ãã¦ããã¨
- Chiron
- å人çãªæ £ãã®åé¡ã§ä½¿ã
- FSharp.Data
- Readerããå¿ è¦ãªãæ
- Json.NET
- ä»ã®ã©ã¤ãã©ãªãããã«ä¾åãã¦ããæã¯åçç¡ç¨ã§æ¡ç¨
- åãããã¸ã§ã¯ãã§è¤æ°ã®JSONã©ã¤ãã©ãªã使ããããªã
- DataContractJsonSerializer
- ä¸è¨ã使ããã¨ããåå«ãªã¨ã
ãããªæãã§ããããã
çµå±F#ã§ãJSONã©ã¤ãã©ãªã¯æ°¾æ¿«ãã¦ããã®ã§ããâ¦ã¤ããã