2016-11-02 34 views
0

私はHTTPoisonを使用してエリクサーガイドのWebサイトを取得し、Flokiと解析してHTML 2 Jupyter Notebookトランスフォーマを作成します(説明はMarkdown付き)。私はバックミックを入れなければならない。 \u0060これまでに動作するコードの強調表示。私は文字列補間と他の場所Enum.join ""を使用して、HTMLからMarkdownへの処理と変換を行う場所をいくつか持っています。ユニコードでpoisonを使用してjsonをエンコードする

変換された結果は、jupyter notebookformatに従ってマップに格納されます。 Poison.encode notebookに電話すると、コードポイントがなくなるため、エラーが発生します。私はさまざまなことを試みましたが、問題がどこにあるのかまだ分かりません。

テキストを処理するときに間違っていることは何ですか?毒が唯一のマップとリストと連携しながら、

** (Poison.EncodeError) unable to encode value: {:source, ["Elixir also provides `Port`, `Reference` and `PID` as data types (usually used in process communication), and we will take a quick look at them when talking about processes. For now, let’s take a look at some of the basic operators that go with our basic types."]} 
lib/poison/encoder.ex:377: Poison.Encoder.Any.encode/2 
lib/poison/encoder.ex:255: anonymous fn/3 in Poison.Encoder.List.encode/3 
lib/poison/encoder.ex:256: Poison.Encoder.List."-encode/3-lists^foldr/2-1-"/3 
lib/poison/encoder.ex:256: Poison.Encoder.List.encode/3 
lib/poison.ex:41: Poison.encode!/2 
(guide2nb) lib/cli.ex:27: CLI.process/1 
(elixir) lib/kernel/cli.ex:76: anonymous fn/3 in Kernel.CLI.exec_fun/2 
+0

エンコードしようとしている値は、マップのようには見えませんが、タプルです。元の値をここに貼り付けてください(コード化しようとしているコード) – Sheharyar

+0

毒はタプルをエンコードしません。 –

答えて

2

ここでの問題は、あなたがTupleをエンコードしようとしているということです。これは例外です。エンコードしようとしていた値がタプルの代わりにMapだった場合、それは完全に機能します。 Unicodeはこれとは何の関係もありません。

iex(1)> value = %{source: ["Elixir also provides `Port`, `Reference` and `PID` as data types (usually used in process communication), and we will take a quick look at them when talking about processes. For now, let’s take a look at some of the basic operators that go with our basic types."]} 
iex(2)> Poison.encode(value) 
{:ok, 
"{\"source\":[\"Elixir also provides `Port`, `Reference` and `PID` as data types (usually used in process communication), and we will take a quick look at them when talking about processes. For now, let’s take a look at some of the basic operators that go with our basic types.\"]}"} 
+0

ヒントのおかげで...リファクタリングに行く私のコード。実際にはマップとリストのみを使用していますが、HTMLツリーの解析の再帰にはflat_mapsがあります。そのため、%{cell_type :: code、metadata:%{}、ソース:["0o777"]}のタプルを含むキーワードリストに変換されたマップがあります。 {{:cell_type、:markdown}、{:メタデータ、%{}}、{:ソース、["基本タイプ"]}、{:cell_type、:マークダウン}、{:メタデータ、%{}}、{ :source、[]}、 ' –

+0

問題の名前をより近づけるために、問題の名前を変更すると便利です。それは他人のためのより簡単な参照になります。 – mmartinson

関連する問題