このデータのテーブルを変換するのに助けが必要です:
[
{property:"key", content:"1"},
{property:"key", content:"2"},
{property:"key2", content:"3"},
{property:"key2:subkey", content:"4"},
{property:"key2:someother:key", content:"5"},
{property:"foo", content:"6"},
{property:"foo", content:"7"},
{property:"foo:bar", content:"8"}
]
次の構造を持つ JSON オブジェクトに変換します。
{
key: ["1", "2"],
key2: {
'': "3"
subkey: "4"
someother: {
key: "5"
}
},
foo: [
"6",
{
'': "7"
bar: "8"
}
]
}
ルールは次のとおりです。注: すべてのルールは、JSON オブジェクトの任意のレベルに適用されます (json.levelOne、json.level.two、json.level.three.even など)。
- for each
row.property
like"a:b:c"
は に変換する必要がありjson.a.b.c = row.content
ます。 - いつ
row.property = "x"
、そしてjson.x !== undefined
、json.x = [json.x, row.content]
- いつ
json.x === "string"
でもrow.property = "x:y"
_json.x = {'': json.x, y: row.content}
- いつ
Array.isArray(json.x) && json.x[json.x.length-1] === "string"
でもrow.property = "x:y"
_json.x[json.x.length-1] = {'': json.x[json.x.length-1], y: row.content}
これで、データをこの JSON オブジェクト形式に変換するために何をする必要があるかの基準について、ある程度のアイデアが得られることを願っています。
なんで?
Open Graph のメタデータを取得して JSON オブジェクトにシリアル化しようとしています。上記の形式は、Open Graph のメタデータ構造を最もよく反映していると思います。ただし、このアルゴリズムの作成には助けが必要です。これは、私が取り組んでいるオープン ソース Node.js プロジェクト用です。
すべての助けに感謝します。ありがとう!
編集
したがって、パーサーにはいくつかの問題が残っています。場合によっては、リーフ ノードで配列が発生します。
GitHub のプロジェクトは次のとおりです: https://github.com/samholmes/node-open-graphお気軽にフォークして、より優れた解析を作成し、プル リクエストを送ってください。