Ruby JavaScript的对象属性,比如哈希?

Ruby JavaScript的对象属性,比如哈希?,ruby,hash,Ruby,Hash,这是一个奇怪的问题,但我不 我把原来的问题复杂化了。如果要查看原始问题,请查看前面的编辑。下面是我的修订问题,结合我前面的两个问题,尽可能简单地解释: 我有一个目标。对象可以有x个字段,并且所有字段和值都可以不同。例如: 或 我使用的gem/db需要特定的查询格式。这是查询必须具有的格式:createu:User{attribute:someatt,other_att:32}等等。注意它对其值使用的类似JavaScript的散列 我试图在查询中插入对象的属性。但我不知道如何将正确的字段和值映射到

这是一个奇怪的问题,但我不

我把原来的问题复杂化了。如果要查看原始问题,请查看前面的编辑。下面是我的修订问题,结合我前面的两个问题,尽可能简单地解释:

我有一个目标。对象可以有x个字段,并且所有字段和值都可以不同。例如:

我使用的gem/db需要特定的查询格式。这是查询必须具有的格式:createu:User{attribute:someatt,other_att:32}等等。注意它对其值使用的类似JavaScript的散列

我试图在查询中插入对象的属性。但我不知道如何将正确的字段和值映射到查询中。以下是我开始和结束的示例:

对象==>

创建u:User{name:John,height:75}

最简单的方法是什么?感谢到目前为止帮助过我的每一个人


请注意,可以将属性转换为Ruby哈希:{:name=>John,:height=>75},如原始问题中所解释的,但是将该哈希更改为查询中的语法太混乱了,因此我回溯并简化了我的问题。

文本不太可能是问题所在。JSON风格的语法 在Ruby 1.9中作为一个较长的字面缩写引入 哈什火箭风格

> {name: 'John'} == {:name => 'John'}
=> true

这没有道理。这里肯定还有别的事情

散列就是散列就是散列,不管你用什么语法创建它,它仍然是完全相同的散列。这四个是100%等效的,如果不是,那就是Ruby实现中的一个bug:

hash = { name: 'John' }

hash = { :name => 'John' }

hash = {}
hash[:name] = 'John'

hash = Hash.new
hash[%Q|name|.to_sym] = %w@John@.first

他们之间绝对没有区别。没有Hashrocket哈希或JSON样式的哈希。用于构造这些散列的文本之间存在差异,但这种差异仅在解析时存在。在运行时,它们与16、0x10和020完全相同。

通过查看Ruby文档来了解这一点。这比看上去要简单得多。.collect方法或map可用于将每个值和字段映射到可放入查询的插值字符串。例如:

hash = {first_name: 'John', last_name: 'Smith'}
hash.collect {|k, v| "#{k}: #{v}"}

=> ["first_name: John", "last_name: Smith"]

无效输入“:”:应为空白、标识符“}”或无符号整数Nope。这就是问题所在,因为JSON样式的哈希不是Ruby,而是查询语言的一部分。计算散列时,输出将使用散列火箭。在irb中键入{name:'John'}。它的计算结果为{:name=>'John'}。您使用的是哪个版本的ruby?MRI 2.1。问题不在于Ruby的版本。鲁比正在按它的本意行事。我只需要找到一种方法来字符串化散列,而不必事先对其进行评估。因为当它被计算时,它会变成一个散列火箭散列。试过了。原始post^下的注释。听起来您所描述的gem不希望使用JSON样式的散列,而是希望使用JSON本身。只需将散列转换为json,它可能会工作。唯一的问题是,将散列转换为name:John,但查询API不查找name,而是查找name:。下面是我使用JSON:SyntaxError:unexpected tCONSTANT时出现的错误,预期结束-input@muistooshort将其更改为“Javascript”。谢谢。实际的查询是Neo4j Cypher查询API。宝石是新摄影术。我只是希望能够将一个对象转换成“Javascript”样式的散列,在这里我可以直接将它插入到查询中。下面是实际的查询:createu:User{hash},当手动插入hash={attributes:'someattribute'}时,它会运行。必须有一种方法来解析出正确的信息,然后将其插入Javascript样式的散列,或者使用冒号将信息硬编码到伪散列/字符串中,然后进行插值。是的,我对问题的查询进行了简化,同样是Basics,Neography希望查询是一个看起来像JavaScript对象文字的字符串?