【发布时间】:2017-07-25 20:02:51
【问题描述】:
我遇到一个问题,如果名称带有 ' 或 ",我的 JSON 解析将失败。我想知道如何避免这种情况。
这是我当前的代码:
def create
puts params
#@contact = Contact.new(contact_params)
#@contact.user = current_user
contactsParam = params[:contacts]
if contactsParam
# contactsParam.each do |contact|
# end
contactValues = contactsParam.map { |c|
puts "dulce!!! : " + c.to_s
json = JSON.parse(c)
result = "('#{json['name']}', '#{json['phone_number']}', '#{json['detail']}', '#{json['image_url']}', '#{json['email']}', '#{json['address']}', '#{json['city']}', '#{json['state']}', '#{json['zipcode']}', '#{json['country']}', #{current_user.id}, now(), now())"
result
}.join(",")
if contactValues.length > 0
ActiveRecord::Base.connection.execute("INSERT INTO contacts (name, phone_number, detail, image_url, email, address, city, state, zipcode, country, user_id, created_at, updated_at) VALUES #{contactValues}")
end
end
这是一个失败的 JSON 字符串示例(我添加了一堆随机字符进行测试)。
{"name":"Aaacontacttest'/'@"-jgg&$;$/&/@.'sheh","phone_number":",7*#;878545848487849648","detail":"","image_url":"","email":"test@test.com","address":"-/:;()$@""":$;$:$$/!:!/!,!6677bhgv
2017-07-25T20:08:54.614283+00:00 app[web.1]: Hsbsbsbb7788$!","city":"Hehshdbdb","state":"HSSHHSHS$&:$:$","zipcode":"3319)","country":"United States"}
【问题讨论】:
-
从代码中删除所有不相关的绒毛并显示实际输入。
-
您真的需要为
result插入这些值吗? -
@RickS:这显然不是一个有效的 json。你想在这里做什么?
-
@RickS:ruby 有多种字符串替换方法。
gsub就是其中之一,看看吧。 -
@RickS 您输入的问题是您想转义“内部”引号,而不是“外部”引号。至少可以说,您如何确定哪个是重要的。
标签: ruby-on-rails json ruby parsing