0

我每天使用 wget 获取几十个 JSON 文件,如下所示:

 {
 "results":  [
     {
      "id": "ABC789",
      "title": "Apple",
     },
     {
      "id": "XYZ123",
      "title": "Orange",
     }]
 }

我的目标是在给定一个值或一组值的每个 JSON 文件上找到行的位置(即“XYZ123 位于哪一行?”)。在前面的示例中,ABC789 在第 1 行,XYZ123 在第 2 行,依此类推。

至于现在,我使用 Google Regine 来“快速”可视化(使用文本过滤器选项)XYZ123 所在的位置(第 2 行)。

但是由于为每个文件手动执行此操作需要一段时间,我想知道是否有一种快速有效的方法。

我能做什么以及如何获取和执行请求?提前致谢!FOF0

4

2 回答 2

0

在蟒蛇中:

import json
#assume json_string = your loaded data
data = json.loads(json_string)
mapped_vals = []
for ent in data:
  mapped_vals.append(ent['id'])

列表中项目的顺序将根据 json 数据进行索引,因为列表是一个有序集合。

在 PHP 中:

$data = json_decode($json_string);
$output = array();
foreach($data as $values){
  $output[] = $values->id;
}

同样,PHP 数组的有序特性确保输出将按照索引按原样排序。

如果需要,可以修改任一示例以使用映射字典 (python) 或关联数组 (php)。

您可以将它们调整为将id值作为参数的函数,跟踪它们在数组中的距离,并在找到时突破并返回当前索引。

于 2012-06-26T18:08:49.083 回答
0

哇。我在 10 个月前发布了最初的问题,当时我对 Python 和计算机编程一无所知!

回答 但是我去年 12 月学习了基本的 Python,并提出了一个解决方案,不仅可以获取排名,还可以将结果插入 MySQL 数据库:

import urllib.request
import json

# Make connection and get the content
response = urllib.request.urlopen(http://whatever.com/search?=ids=1212,125,54,454)
content = response.read()

# Decode Json search results to type dict
json_search = json.loads(content.decode("utf8"))

# Get 'results' key-value pairs to a list
search_data_all = []

for i in json_search['results']:
    search_data_all.append(i)

# Prepare MySQL list with ranking order for each id item

ranks_list_to_mysql = []

for i in range(len(search_data_all)):
    d = {}
    d['id'] = search_data_all[i]['id']
    d['rank'] = i + 1
    ranks_list_to_mysql.append(d)
于 2013-04-21T15:36:06.540 回答