2017-07-12 9 views
2

は、レコード・タイプとレコードのリストを考える:ReasonのJSONにレコードのリストをエンコードする方法は?

type note = { 
    text: string, 
    id: string 
}; 

let notes: list complete_note = [{text: "lol", id: "1"}, {text: "lol2", id: "2"}] 

にはどうすればbs-jsonモジュールを使用してJSONにこれをエンコードするのですか?私が試した何

:私は手動でbucklescriptの文字列補間を使用してJSON文字列を作成しようとしましたが、それは間違いなく私がやりたい何かはありません:)

notes 
|> Array.of_list 
|> Array.map (
    fun x => { 
    // What should I do? 
    } 
) 
|> Json.Encode.stringArray 
|> Js.Json.stringify; 
+0

私の問題に関連する 'line'と' point'の別の型を定義する方法は見当たりません。私はOcamlで書かれたJSONエンジンであるyojsonを使いたくないので、bs-jsonを使ってブラウザでJSONのネイティブ処理を利用したいと思っています。 –

+0

それは私の質問のいずれにも答えません。私は 'bs-json'を使っていると言いましたが、レコードをエンコードする例はありません。 –

+0

ありがとうございますが、レコードをエンコードする例はありません。 –

答えて

3

免責事項、私は、理由の専門家ではありませんよコードは非慣用的である可能性があります。 BuckleScriptがインストールされていないので、エラーが発生することもありますので、テストしませんでした。

あなたはtextidフィールドを持つJSONオブジェクトとして各音符を表現したいのであれば、あなたはJSの辞書の配列からJSON文書を作成しJs.Json.objectArray機能を使用することができます。辞書を作成する最も簡単な方法は、Js.Dict.fromList関数を使用することです。この関数はペアのリストを取ります。

notes 
|> Array.of_list 
|> Array.map (fun {id, text} => { 
    Js.Dict.fromList [("text", Js.Json.string text), ("id", Js.Json.string id)] 
}) 
|> Js.Json.objectArray 
|> Js.Json.stringify; 
+0

あなたの答えには、細かいところが1つしかありませんでした。「文字列」は機能しません。Js.Json.stringに強制する必要があります。 –

関連する問題