【问题标题】:How to extract specific key values from JSON data?如何从 JSON 数据中提取特定的键值?
【发布时间】:2021-02-08 00:57:51
【问题描述】:

我正在使用如下 JSON 数据:

[{'_index': 'abc', '_type': '_doc', '_id': '1', '_score': None, '_source': {'ColA': 'AZ', 'ColB': 'BY', 'ColC': 'CX', 'ColD': 'DW', 'ColE': 'EV'}},{'_index': 'abc', '_type': '_doc', '_id': '2', '_score': None, '_source': {'ColA': 'GT', 'ColB': 'HS', 'ColC': 'IR', 'ColD': 'JQ', 'ColE': 'KP'}},........]

从这里,我需要提取 ColA、ColB 和 ColD 值。我尝试了 json_normalize 方法,该方法在 Jupyter Notebook 中运行良好,但在 AWS Lambda 中给了我错误。谁能建议一些其他方法来做到这一点?

【问题讨论】:

  • 您能否改进您的问题!包括代码 sn-p、错误消息或解释究竟是什么不工作?从传递给 lambda 的事件中获取字段非常简单:event['_index']
  • 你能指定你在哪种类型的变量中拥有 json 吗? (已经是列表、字符串、oject 等)并为我们提供更多详细信息以帮助您。

标签: json python-3.x aws-lambda


【解决方案1】:

我将您发布的 json 实现为字典数组(因为您没有指定如何接收它)所以请考虑到这一点。

首先,json好像有格式错误,json没有为数组的每个元素都加上Brace,如下图:

{'_index': 'abc', 
  '_type': '_doc', 
  '_id': '1', 
  '_score': None, 
  '_source': {'ColA': 'AZ', 
              'ColB': 'BY', 
              'ColC': 'CX', 
              'ColD': 'DW', 
              'ColE': 'EV'}, # In this place there is a } missing

请验证您的输入 json,也许这可能是问题的根源。

所以我更正了 JSON 并访问了所需的元素:

l = [{'_index': 'abc', 
  '_type': '_doc', 
  '_id': '1', 
  '_score': None, 
  '_source': {'ColA': 'AZ', 
              'ColB': 'BY', 
              'ColC': 'CX', 
              'ColD': 'DW', 
              'ColE': 'EV'}},
  {'_index': 'abc', 
   '_type': '_doc', 
   '_id': '2', 
   '_score': None,
   '_source': {'ColA': 'GT', 
               'ColB': 'HS', 
               'ColC': 'IR', 
               'ColD': 'JQ', 
               'ColE': 'KP'}}]

# loop the array and extract the keys needed and apply your logic after that
for element in l:
    print(element['_source']['ColA'])
    print(element['_source']['ColB'])
    print(element['_source']['ColD'])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多