在 Erlang 中使用 mochijson2 解码 JSON
我有一个包含一些 JSON 数据的 var:
A = <<"{\"job\": {\"id\": \"1\"}}">>.
使用 mochijson2,我解码数据:
Struct = mochijson2:decode(A).
现在我有这个:
{struct,[{<<"job">>,{struct,[{<<"id">>,<<"1">>}]}}]}
我正在尝试读取(例如)“job”或“id”。
我尝试使用 struct.get_value 但它似乎不起作用。
有什么想法吗?
I have a var that has some JSON data:
A = <<"{\"job\": {\"id\": \"1\"}}">>.
Using mochijson2, I decode the data:
Struct = mochijson2:decode(A).
And now I have this:
{struct,[{<<"job">>,{struct,[{<<"id">>,<<"1">>}]}}]}
I am trying to read (for example), "job" or "id".
I tried using struct.get_value but it doesn't seem to work.
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
数据采用 {struct, proplist()} 格式,因此您可以执行以下操作:
您可以在以下位置阅读有关 proplists 的更多信息: http://www.erlang.org/doc/man/proplists.html
The data is in {struct, proplist()} format, so here's what you do:
You can read more about proplists at: http://www.erlang.org/doc/man/proplists.html
另一个访问 json 结构的辅助函数:
用法:
我认为从 json 中提取值再简单不过了。
Another helper function to access json structure:
Usage:
I don't think extracting values from json can be any simpler.
这是访问数据的另一种方法。使用记录语法以方便使用。
与使用记录的答案完全相同。这是使用 mochijson2 时的另一个选择。我个人更喜欢这种语法。
Here is another method of accessing the data. Uses records syntax for ease of use.
Does exactly the same thing as the answer using records instead. Just another option when using mochijson2. I personally like this syntax better.
添加到前面给出的答案中,还有一个很好的 教程在 mochiweb 上,json(视频)。
Adding to the answer given earlier there's also a nice tutorial on mochiweb, json (video).
我最喜欢的处理 mochijson 数据的方法是用哈希映射替换所有结构,然后它们可以干净地进行模式匹配。为此,我编写了这个易于理解的函数:
这是如何使用它的示例:
这有很多优点,特别是在处理可能具有意外形状的传入数据时。
My favourite way of handeling mochijson data is replacing all the struct's with hash maps after which they can be cleanly pattern matched. To do so I wrote this easy to understand function:
Here is an example of how to use it:
This has many advantages especially when working with incoming data that can have an unexpected shape.