0

Twitterユーザーのハッシュテーブルがあります。

tweeter1: @jack
tweeter2: @jill
tweeter3: @john

しかし、のせいで@、ファイルを作成できませんYAML.load

スローされるエラーはPsych::SyntaxError: (<unknown>): did not find expected node content while parsing a flow node at line 1 column 11

@YAMLで文字列リテラルをどのように使用しますか?

4

2 に答える 2

4

値を二重引用符で囲んでください。

tweeter1: "@jack"
tweeter2: "@jill"
tweeter3: "@john"

次に、それを読んだときに期待されるハッシュを取得する必要があります。

{
    "tweeter1" => "@jack",
    "tweeter2" => "@jill",
    "tweeter3" => "@john"
}

YAML形式の詳細については、いつでもyaml.orgにアクセスできます。

于 2012-11-17T00:12:37.883 に答える
2

YAML.loadファイルを作成せず、を使用しますYAML.load_file

それ以外の場合、通常、文字列が明らかに整数でない場合は、文字列に裸の値を使用できますが、二重引用符で囲むことにより、文字列を強制的に文字列に含めることができます。

tweeter1: "@jack"
tweeter2: "@jill"
tweeter3: "@john"

YAML形式の問題を扱っているときに行うことは、最初にRubyで構造を作成し、次にYAMLに作成させてから、それをモデルとして使用することです。

require 'yaml'

asdf = {
  'foo' => '@foo'
}

puts asdf.to_yaml

出力:

---
foo: ! '@foo'

次に、往復テストを行います。入れたものを取り出したら、満足しています。

pp YAML.load(asdf.to_yaml)
{"foo"=>"@foo"}
{
    "foo" => "@foo"
}

"@foo"ただし、 YAMLはを使用しています! '@foo'が、それは必要ではないことに注意してください。

asdf = '
---
foo: "@foo"
'
YAML.load(asdf)
{
    "foo" => "@foo"
}
于 2012-11-17T00:12:52.320 に答える