使用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,13,true)

使用与原始json中相同的格式。

如何实现?我通常使用gson库,即JsonObjects而不是JSONObjects。

ks_xpd 回答:使用gson获取原始格式的Java json(仅包含带引号的字符串)

认为我找到了使用getAsJsonPrimitive的解决方案

            if (entry.getValue().getAsJsonPrimitive().isString())
                values+="\""+jsonobject.get(key).getAsString()+"\",";
            else
                values+=jsonobject.get(key).getAsString()+",";

由于JsonPrimitive仍在适用的地方包含了引号,因此人们可以这样做

            values+=entry.getValue().getAsJsonPrimitive().toString()+",";

这完全符合我的要求。

本文链接:https://www.f2er.com/3089339.html

大家都在问