Hello Ruby用户我有Json数组格式
[
"Can also work with any bluetooth-enabled smartphones and\ntablets",
"For calls and music, Hands-free",
"Very stylish design and lightweight",
"Function:Bluetooth,Noise Cancelling,Microphone",
"Compatible:For Any Device With Bluetooth Function",
"Chipset: CSR4.0", "Bluetooth Version:Bluetooth 4.0",
"Transmission Distance:10 Meters"
]
我想使用下面的html格式将此数组保存为html形式。
<ul>
<li>Can also work with any bluetooth-enabled smartphones and\ntablets</li>
<li>For calls and music, Hands-free</li>
<li>Very stylish design and lightweight</li>
<li>Function:Bluetooth,Noise Cancelling,Microphone</li>
<li>Compatible:For Any Device With Bluetooth Function</li>
<li>Chipset: CSR4.0</li>
<li>Bluetooth Version:Bluetooth 4.0</li>
<li>Transmission Distance:10 Meters</li>
</ul>
这是我当前正常工作的代码,如果我必须将它保存为数组,但是我需要将其作为html格式,以便用户可以轻松阅读
result = JSON.parse(jsonparse)
result["mods"]["listItems"].each do |result|
@item = Item.new
@item.item_details = result["description"]
@item.save
end
根据我之前的尝试解决此问题
result = JSON.parse(jsonparse)
result["mods"]["listItems"].each do |result|
@item = Item.new
item_list = result["description"]
item_list.each do |list|
@item.item_details = "<li>"+list+"</li>"
end
@item.save
end
这个只保存一个数组而没有<ul>
头
继承原始代码
namespace :scraper do
desc "Scrape Website"
task somesite: :environment do
require 'open-uri'
require 'nokogiri'
require 'json'
url = "url here!"
page = Nokogiri::HTML(open(url))
script = page.search('head script')[2]
jsonparse = script.content[/\{\"[a-zA-Z0-9\"\:\-\,\ \=\(\)\.\_\D\/\[\]\}]+/i]
result = JSON.parse(jsonparse)
result["mods"]["listItems"].each do |result|
@item = Item.new
item_details = result["description"].each {|list| "<li>#{list}</li>" }
puts item_details
@item.item_old_price = result["originalPrice"]
@item.item_final_price = result["price"]
@item.save
end
end
end
想法是使用html格式将数组保存到数据库中。
<ul>
<li>content 1</li>
<li>content 2</li>
<li>content and soon</li>
</ul>
由于
答案 0 :(得分:0)
我不确定你打算做什么。
请检查以下代码并给我反馈。 快乐的编码:)
<!-- language: ruby -->
require 'json'
class MyJsonParser
def initialize
@items = []
end
def parse(json)
result = JSON.parse(json)
generate_items(result)
items
end
private
attr_reader :items
def generate_items(result)
result['mods']['listItems'].each {|item_detail| items << Item.new(item_detail)}
end
end
class Item
attr_reader :details
def initialize(detail='')
@details = ''
before_initialize
details << detail
after_initialize
end
private
def before_initialize
details << '<li>'
end
def after_initialize
details << '</li>'
end
end
json_str = '{
"mods": {
"listItems":
[
"Can also work with any bluetooth-enabled smartphones and\ntablets",
"For calls and music, Hands-free",
"Very stylish design and lightweight",
"Function:Bluetooth,Noise Cancelling,Microphone",
"Compatible:For Any Device With Bluetooth Function",
"Chipset: CSR4.0",
"Bluetooth Version:Bluetooth 4.0",
"Transmission Distance:10 Meters"
]
}
}'
result = MyJsonParser.new.parse(json_str)
result.each do |i|
p i.details
end