java jsonsql_记录一下遇到的问题 java将json数据解析为sql语句

importjava.util.Iterator;importjava.util.Set;importjava.util.Map.Entry;importcom.google.gson.JsonArray;importcom.google.gson.JsonElement;importcom.google.gson.JsonObject;importcom.google.gson.JsonParser;public classSql

{public staticString parseSQL(String json)

{

JsonParser parser= newJsonParser();

JsonObject obj=(JsonObject) parser.parse(json);;

String table= obj.get("table").getAsString();

String op_type= obj.get("op_type").getAsString();

String sql= "";if("I".equals(op_type))

{

sql+= "INSERT INTO " + table + " (";

JsonObject after= (JsonObject) obj.get("after");

Set> entry =after.entrySet();

Iterator> it =entry.iterator();

String vs= " values (";while(it.hasNext())

{

Entry elem =it.next();

String key=elem.getKey();

String val=elem.getValue().toString();

sql+= key + ", ";

vs+= val + ", ";

}

sql= sql.replaceAll(",\\s*$", "");

vs= vs.replaceAll(",\\s*$", "");

sql+= ") " + vs + ")";

}else if("U".equals(op_type))

{

sql+= "UPDATE " + table + " SET ";

JsonObject after= (JsonObject) obj.get("after");

Set> entry =after.entrySet();

Iterator> it =entry.iterator();while(it.hasNext())

{

Entry elem =it.next();

String key=elem.getKey();

String val=elem.getValue().toString();

sql+= key + "=" + val + ", ";

}

sql= sql.replaceAll(",\\s*$", "");

sql+= " WHERE ";

after= (JsonObject) obj.get("before");

entry=after.entrySet();

it=entry.iterator();while(it.hasNext())

{

Entry elem =it.next();

String key=elem.getKey();

String val=elem.getValue().toString();

sql+= key + "=" + val + " AND ";

}

sql= sql.replaceAll("\\s*AND\\s*$", "");

}else if("D".equals(op_type))

{

sql+= "DELETE FROM " + table + " WHERE ";

JsonObject after= (JsonObject) obj.get("before");

Set> entry =after.entrySet();

Iterator> it =entry.iterator();while(it.hasNext())

{

Entry elem =it.next();

String key=elem.getKey();

String val=elem.getValue().toString();

sql+= key + "=" + val + " AND ";

}

sql= sql.replaceAll("\\s*AND\\s*$", "");

}returnsql;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值