简体   繁体   English

Erlang:将字符串解析为json

[英]Erlang: Parse string to json

I have the following string: 我有以下字符串:

"{\"headers\":[\"CNPJ\",\"PDF\",\"error\"],\"rows\":[[\"17192451000170\",\"FILE:application/pdf;170286;\",null],[\"234566767544\",\"FILE:application/pdf;456378;\",null],[\"233456767544\",\"FILE:application/pdf;456378;\",null]]}"

how do I parse it to a normal Json format? 如何将其解析为普通的Json格式?

meaning: 含义:

{"rows" :[
 {"CNPJ":"17192451000170","PDF":"FILE:application/pdf;170286;","error":null},
 {"CNPJ":"17192451000170","PDF":"FILE:application/pdf;170286;","error":null},
 {"CNPJ":"17192451000170", "PDF":"FILE:application/pdf;170286;,"error":null"}
]}

or any other json format 或任何其他json格式

This is already a valid JSON format. 这已经是有效的JSON格式。

If you just want to strip \\ then you can simply: 如果只想剥离\\则可以简单地:

(hbd@crayon2.yoonka.com)31> JsonOrg = <<"{\"headers\":[\"CNPJ\",\"PDF\",\"error\"],\"rows\":[[\"17192451000170\",\"FILE:application/pdf;170286;\",null],[\"234566767544\",\"FILE:application/pdf;456378;\",null],[\"233456767544\",\"FILE:application/pdf;456378;\",null]]}">>.
<<"{\"headers\":[\"CNPJ\",\"PDF\",\"error\"],\"rows\":[[\"17192451000170\",\"FILE:application/pdf;170286;\",null],[\"234566767544\",\"FI"...>>

(hbd@crayon2.yoonka.com)32> io:format("~s~n", [binary_to_list(JsonOrg)]).
{"headers":["CNPJ","PDF","error"],"rows":[["17192451000170","FILE:application/pdf;170286;",null],["234566767544","FILE:application/pdf;456378;",null],["233456767544","FILE:application/pdf;456378;",null]]}
ok

You can also parse back and forth between Json and Erlang. 您还可以在Json和Erlang之间来回解析。 I tested that with the yajler decoder : 我用yajler解码器进行了测试:

(hbd@crayon2.yoonka.com)43> {ok, Parsed} = yajler:decode(<<"{\"headers\":[\"CNPJ\",\"PDF\",\"error\"],\"rows\":[[\"17192451000170\",\"FILE:application/pdf;170286;\",null],[\"234566767544\",\"FILE:application/pdf;456378;\",null],[\"233456767544\",\"FILE:application/pdf;456378;\",null]]}">>).
{ok,[{<<"headers">>,[<<"CNPJ">>,<<"PDF">>,<<"error">>]},
     {<<"rows">>,
      [[<<"17192451000170">>,<<"FILE:application/pdf;170286;">>,
        undefined],
       [<<"234566767544">>,<<"FILE:application/pdf;456378;">>,
        undefined],
       [<<"233456767544">>,<<"FILE:application/pdf;456378;">>,
        undefined]]}]}

(hbd@crayon2.yoonka.com)44> Json = binary:list_to_bin(yajler:encode(Parsed)).
<<"{\"headers\":[\"CNPJ\",\"PDF\",\"error\"],\"rows\":[[\"17192451000170\",\"FILE:application/pdf;170286;\",\"undefined\"],[\"2345667675"...>>

Yajler is an Erlang NIF so it is using a C library, in this case called yajl , to do the actual parsing, but I imagine a similar result you would get from other Erlang applications that can parse JSON. Yajler是Erlang NIF,因此它使用C库(在本例中为yajl )进行实际的解析,但是我想您会从其他可以解析JSON的Erlang应用程序中获得类似的结果。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM