java jsonsql_java将json数据解析为sql语句?

展开全部

import java.util.Iterator;

import java.util.Set;

import java.util.Map.Entry;

import com.google.gson.JsonArray;

import com.google.gson.JsonElement;

import com.google.gson.JsonObject;

import com.google.gson.JsonParser;

public class Sql

{

public static String parseSQL(String json)

{

e5a48de588b662616964757a686964616f31333363393761JsonParser parser = new JsonParser();

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*$", "");

}

return sql;

}

public static void main(String[] args)

{

String insert =

"{\"table\":\"GG.TCUSTORD\",\"op_type\":\"I\",\"op_ts\":\"2013-06-02 22:14:36.000000\",\"current_ts\":\"2015-09-18T13:39:35.447000\",\"pos\":\"00000000000000001444\",\"tokens\":{\"R\":\"AADPkvAAEAAEqL2AAA\"},\"after\":{\"CUST_CODE\":\"WILL\",\"ORDER_DATE\":\"1994-09-30:15:33:00\",\"PRODUCT_CODE\":\"CAR\",\"ORDER_ID\":\"144\",\"PRODUCT_PRICE\":17520.00,\"PRODUCT_AMOUNT\":3,\"TRANSACTION_ID\":\"100\"}}";

String update =

"{\"table\":\"GG.TCUSTORD\",\"op_type\":\"U\",\"op_ts\":\"2013-06-02 22:14:41.000000\",\"current_ts\":\"2015-09-18T13:39:35.748000\",\"pos\":\"00000000000000002891\",\"tokens\":{\"L\":\"206080450\",\"6\":\"9.0.80330\",\"R\":\"AADPkvAAEAAEqLzAAC\"},\"before\":{\"CUST_CODE\":\"BILL\",\"ORDER_DATE\":\"1995-12-31:15:00:00\",\"PRODUCT_CODE\":\"CAR\",\"ORDER_ID\":\"765\",\"PRODUCT_PRICE\":15000.00,\"PRODUCT_AMOUNT\":3,\"TRANSACTION_ID\":\"100\"},\"after\":{\"CUST_CODE\":\"BILL\",\"ORDER_DATE\":\"1995-12-31:15:00:00\",\"PRODUCT_CODE\":\"CAR\",\"ORDER_ID\":\"765\",\"PRODUCT_PRICE\":14000.00,\"PRODUCT_AMOUNT\":3,\"TRANSCATION_ID\":\"100\"}}";

String delete =

"{\"table\":\"GG.TCUSTORD\",\"op_type\":\"D\",\"op_ts\":\"2013-06-02 22:14:41.000000\",\"current_ts\":\"2015-09-18T13:39:35.766000\",\"pos\":\"00000000000000004338\",\"tokens\":{\"L\":\"206080450\",\"6\":\"9.0.80330\",\"R\":\"AADPkvAAEAAEqLzAAC\"},\"before\":{\"CUST_CODE\":\"DAVE\",\"ORDER_DATE\":\"1993-11-03:07:51:35\",\"PRODUCT_CODE\":\"PLANE\",\"ORDER_ID\":\"600\"}}";

System.out.println(parseSQL(insert));

System.out.println(parseSQL(update));

System.out.println(parseSQL(delete));

}

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值