【发布时间】:2023-03-31 03:18:02
【问题描述】:
{
"TOTAL" : "520"
,
"PROD_101379" : {
"IMG" : "1406301107587209.jpg",
"NAME" : "hello sunny",
"LINK" : "/product/productDetail.do?seq=101379",
"SEQ" : "101379",
"PRICE" : "18000",
"MILEAGE" : "2"
}
,
"PROD_101378" : {
"IMG" : "",
"NAME" : "special gift",
"LINK" : "/product/productDetail.do?seq=101378",
"SEQ" : "101378",
"PRICE" : "3000",
"MILEAGE" : "2"
}
,
"PROD_101376" : {
"IMG" : "1405020190326241.jpg",
"NAME" : "it radiant",
"LINK" : "/product/productDetail.do?seq=101376",
"SEQ" : "101376",
"PRICE" : "45000",
"MILEAGE" : "2"
}
,
"PAGER" : "<div class="paging"><a href="javascript:pageForm('0');
}
我正在学习如何使用 Ruby 编程,使用 Nokogiri gem 来解析互联网数据。
以上数据是在使用 Net/HTTP 通过 POST 请求后收到的,然后使用 Json gem 解析它。
JSON.parse(x.body)
我正在尝试将这些数据转换为 CSV,如下所示:
IMG | Name | Link | SEQ | Price | Mileage |
对于每个 PROD_xxxxxx 数组。
我已经阅读了 gem 文档,并查看了这里的其他问题,以意识到很像 Nokogiri 解析 HTML(或者更像是 Array & Hash),我应该能够解析 JSON 格式。
我发现我可以通过以下方式获得某物的价值:
json_parsed["TOTAL"]
这会给我“520”
我可以使用相同的方法来获取“PROD_xxxxxx”嵌套数据,但这只会为我提供该名称的特定嵌套数据。
我希望能够遍历它们,所以我尝试了类似的方法
json_parsed["PROD*"].each do |each|
但看起来这不是使用语法的正确方法。
如果我可以遍历每个并获取“IMG”、“NAME”、“LINK”等,我正在尝试使用 CSV 来:
CSV.open(fname,"w") do |csv|
Json_parsed[each-PROD].each do |each|
name = each["NAME"]
img = each["IMG"]
csv << [name, img]
end
end
但是,如果有比上述方法更好的方法将 JSON 数据转换为 CSV(也许这是可能的,因为 JSON 是结构化数据,如 CSV?)我将不胜感激。
谢谢,
【问题讨论】:
-
您是否正在尝试实现目标?
-
@mudasobwa 我需要一个关于如何解决上述问题的指导。我的问题的哪一部分要求“为我编写代码”?您的评论或评论不是很有帮助。如果您认为我应该这样问,或者分享我的尝试,我会很感激您的建议。
-
为了感谢我的建议,我希望您阅读我链接的文章。
-
@Rok ,方法很简单:对于解析的 json 的每个属性,选择从 PROD 开始的所有子对象,并用 ` | 连接子对象的所有属性。 `.