java - 使用 gson 获取原始格式的 Java json(仅用引号括起来的字符串)
问题描述
想象一下我有以下 JsonObject
{"name":"Test Name","id":13,"isimportant":true}
我想把它添加到mysql,所以我会遍历成员
void test(JsonObject jsonobject) {
String names="";
String values="";
Set<Entry<String, JsonElement>> entrySet = jsonobject.entrySet();
for(Map.Entry<String,JsonElement> entry : entrySet) {
String key=entry.getKey();
names+="`"+key+"`,";
values+="\""+jsonobject.get(key).getAsString()+"\",";
}
... create an insert query from the `names` and `values` strings
... and add to database
}
为了确保正确处理字符串,我用引号将所有值括起来,因此这将导致类似的查询
INSERT INTO TestTable (name,id,isimportant) VALUES ("Test Name","13","true")
我宁愿只在实际的字符串变量上加上引号,即
INSERT INTO TestTable (name,id,isimportant) VALUES ("Test Name",13,true)
使用与原始 json 相同的格式。
如何做到这一点?我一般使用 gson 库,即 JsonObjects 而不是 JSONObjects。
解决方案
认为我找到了使用 getAsJsonPrimitive 的解决方案
if (entry.getValue().getAsJsonPrimitive().isString())
values+="\""+jsonobject.get(key).getAsString()+"\",";
else
values+=jsonobject.get(key).getAsString()+",";
由于 JsonPrimitive 仍然包含适用的引号,因此可以这样做
values+=entry.getValue().getAsJsonPrimitive().toString()+",";
这正是我所需要的。
推荐阅读
- ios - 使用 swift 4 从 ios 监听 Firestore 中的实时更新
- android - UPI 隐式意图选择器在红米设备上不起作用
- spring-boot - Spring Boot,获取用于将数据库提取映射到 POJO 的查询
- bash - Bash shellscript 数组元素无序
- c# - 演员词典
到 IReadOnlyDictionary ? - javascript - 呈现可编辑表格的最佳方式
- sql - 如何在 BigQuery 中构建报告的热门转化路径
- android - 清除 sharedViewModel
- xml - XSL - 使用 select 检查多个参数
- php - 当没有数据库异常发生时,Laravel 事务不会回滚