我想将以下数据组写入Dynamodb。
大约有100个数据。由于图像不一定是必需的,因此有图像url元素和无图像url元素的混合。
(questionsList.json)
{
"q_id" : "001",
"q_body" : "Where is the capital of the United States?",
"q_answer" : "Washington, D.C.",
"image_url" : "/Washington.jpg",
"keywords" : [
"UnitedStates",
"Washington"
]
},
{
"q_id" : "002",
"q_body" : "Where is the capital city of the UK?",
"q_answer" : "London",
"image_url" : "",
"keywords" : [
"UK",
"London"
]
},
由于这是编写测试阶段,要写入的Dynamodb是在localhost:8000中准备的,使用的是无服务器框架的无服务器Dynamodb本地插件,而不是生产环境。
为了将上述JSON数据写入此Dynamodb,我在Boto 3(AWS SDK for Python)中编写了以下代码。
from __future__ import print_function
import boto3
import codecs
import json
dynamodb = boto3.resource('dynamodb', region_name='us-east-1', endpoint_url="http://localhost:8000")
table = dynamodb.Table('questionListTable')
with open("questionList.json", "r", encoding='utf-8') as json_file:
items = json.load(json_file)
for item in items:
q_id = item['q_id']
q_body = item['q_body']
q_answer = item['q_answer']
image_url = item['image_url']
keywords = item['keywords']
print("Adding detail:", q_id, q_body)
table.put_item(
Item={
'q_id': q_id,
'q_body': q_body,
'q_answer': q_answer,
'image_url': image_url,
'keywords': keywords,
}
)
执行此代码时,空字符部分出现以下错误。
botocore.exceptions.ClientError:调用PutItem操作时发生错误(ValidationException):一个或多个参数值无效:AttributeValue不能包含空字符串
如果您从下面的写入目标中排除包含空字符的image_url,则写入完成没有任何问题。
from __future__ import print_function
import boto3
import codecs
import json
dynamodb = boto3.resource('dynamodb', region_name='us-east-1', endpoint_url="http://localhost:8000")
table = dynamodb.Table('questionListTable')
with open("questionList.json", "r", encoding='utf-8') as json_file:
items = json.load(json_file)
for item in items:
q_id = item['q_id']
q_body = item['q_body']
q_answer = item['q_answer']
#image_url = item['image_url']
keywords = item['keywords']
print("Adding detail:", q_id, q_body)
table.put_item(
Item={
'q_id': q_id,
'q_body': q_body,
'q_answer': q_answer,
#'image_url': image_url,
'keywords': keywords,
}
)
由于DynamoDB是非关系型数据库,可能还有其他方法很好地利用了特性,但是如何纠正代码写入上述忽略空字符的数据呢?我想说“如果image_url存在,如果它不存在,就写它,忽略它。”
谢谢你。
我解决了我的问题。您可以按如下方式设置null。
from __future__ import print_function
import boto3
import codecs
import json
dynamodb = boto3.resource('dynamodb', region_name='ap-northeast-1', endpoint_url="http://localhost:8000")
table = dynamodb.Table('questionListTable')
with open("questionList.json", "r", encoding='utf-8_sig') as json_file:
items = json.load(json_file)
for item in items:
q_id = item['q_id']
q_body = item['q_body']
q_answer = item['q_answer']
image_url = item['image_url'] if item['image_url'] else None
keywords = item['keywords'] if item['keywords'] else None
print("Adding detail:", q_id, q_body)
table.put_item(
Item={
'q_id': q_id,
'q_body': q_body,
'q_answer': q_answer,
'image_url': image_url,
'keywords': keywords,
}
)
为了检查Dynamodb的情况,使用无服务器框架的离线插件在本地环境中运行API网关。当我实际上使用Postman调用API时,Null被正确地插入到值中。
{
"q_id" : "001",
"q_body" : "Where is the capital of the United States?",
"q_answer" : "Washington, D.C.",
"image_url" : "/Washington.jpg",
"keywords" : [
"UnitedStates",
"Washington"
]
},
{
"q_id" : "002",
"q_body" : "Where is the capital city of the UK?",
"q_answer" : "London",
"image_url" : "null",
"keywords" : [
"UK",
"London"
]
},
我正在用java中的jackson构建一个json体。它会像下面这样 基于不同的 REST URI,json 主体必须忽略某些字段或元素。如何使用杰克逊忽略上述 json 正文中的“学生”部分?当我忽略它时,我应该只能得到 但我得到它如下,这是不正确的- 我有两个带有getters和setters的类,一个作为主语,另一个作为学生。我尝试使用@JsonIgnore,但是它忽略了所有的URI,这是我
问题内容: 如标题中所述,我想忽略文档中元素名称的大小写。 我尝试使用Blaise Doughan发布的代码: 这实际上是行不通的。 对于此XML: 问题答案: 您可以将所有属性映射到小写的节点名称,然后包装XMLStreamReader以对其返回的所有属性/元素名称调用toLowerCase()。然后从该XMLStreamReader解组。 我最近为此问题添加了对EclipseLink JAXB
我有一个Json数组,数组中包含< code>null值。 如何配置Jackson ObjectMapper以忽略此类数组元素-就好像它是空数组? 约束: 没有控制源类-它是第三方类 数组元素类型前期未知 数组名称前面未知
问题内容: HTML中是否有任何方法告诉浏览器不允许对特定元素进行标签索引? 在我的页面上,尽管有一个用jQuery呈现的杂耍,但是当您通过Tab进行制表时,您会在按下Tab控件移动到页面上的下一个可见链接之前获得大量的制表符按下,因为所有通过制表的内容都被隐藏了。视觉上的用户。 问题答案: 您可以使用。 W3C HTML5规范支持负的值: 如果值为负整数 ,则用户代理必须设置元素的tabinde
问题内容: 我在变量中存储了JSON数据。 我想将其写入文本文件进行测试,因此不必每次都从服务器获取数据。 目前,我正在尝试: 我收到此错误: TypeError:必须是字符串或缓冲区,而不是dict 如何解决这个问题? 问题答案: 您忘记了实际的JSON部分- 是字典,尚未进行JSON编码。写这样的最大兼容性(Python 2和3): 在现代系统(即Python 3和UTF-8支持)上,您可以使
我有简单的asmx返回JSON: C#类定义: 使用jquery$调用。ajax: 我的JSON响应(带有不需要的空值): {“PropertyA”:“1”,“PropertyB”:null,“PropertyC”:“1”,“PropertyD”:null} 问:如何仅使用JSON中的非空属性,尽可能多地使用我已经拥有的内容? 我在这里看到了一些答案,人们返回JSON对象和用JSON属性定义的属性