2016-05-16 15 views
2

いくつかの例を読んだ後、それはYojson.Basic.from_stringまたはfrom_channelでJSONオブジェクトを構築するのは簡単です。Yojsonを使用してJSONオブジェクトを更新するにはどうすればよいですか?

他の面では、我々はまた、簡単にpretty_to_stringによって文字列にJSONオブジェクトを変換することができます。

しかし、update JSONオブジェクトは、例えば以下のように入力パラメータがあり、注意が必要です:

{ 
    "content": "test content", 
    "base" : { 
     "version": 1, 
     "id" : "a001" 
    } 
} 

私はそれで"id"を更新し、新しいJSONオブジェクトを返すようにしたい:

{ 
    "content": "test content", 
    "base" : { 
     "version": 1, 
     "id" : "a002" 
    } 
} 

私はJSONオブジェクトを更新する関数を記述しようとしました:

上記のような関数を書くことがYojsonのJSONオブジェクトを更新する最良の方法であるかどうか疑問に思っていましたか?

+0

、あなたは「バグ」についてより明確にすることができますか?コアの代わりに標準ライブラリを使用することをお勧めします。これにより、コードを試して修正する必要がなくなります。 – antron

+1

'Bool'、Float f、...をデフォルト(| _他のものと同様に)扱うことでコードを簡素化できます。次に、それぞれの特定の処理が必要な' Listとssssocだけに焦点を当てます。 –

+1

私はあなたがその –

答えて

1

「バグ」の意味が明確ではありませんが、`Assocにはstring * jsonがなく、(string * json) listになります。これはあなたの`Assoc例では、あなたがすべきことを意味List.map

| `Assoc pairs -> 
    List.map pairs ~f:(fun (okey, ovalue) -> 
    if okey = key then 
     key, new_value 
    else 
     okey, aux ovalue) 

あなたはこの機能を考慮し、名前を付けたいことがあります。より完全な質問については

+0

感謝からインスピレーションを取ることができhttps://github.com/fxfactorial/podge/blob/master/lib/podge.ml#L227、私はエラーを修正:)、同様のもののためのヘルパーLIBを持っています – liweijian

関連する問題