From 96bcdfe4072d748be908229b5a1d8227d6428b56 Mon Sep 17 00:00:00 2001 From: zhangwei Date: Wed, 23 May 2018 19:01:57 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E4=B8=80=E5=A4=84=E7=90=86Gson?= =?UTF-8?q?=E5=BA=8F=E5=88=97=E5=8C=96=E7=9A=84json=E4=B8=B2=E4=B8=AD?= =?UTF-8?q?=E6=95=B0=E5=80=BC=E7=B1=BB=E5=9E=8B=E5=8F=82=E6=95=B0=EF=BC=8C?= =?UTF-8?q?=E5=90=A6=E5=88=99=E4=BC=9A=E6=89=80=E6=9C=89=E6=95=B0=E5=80=BC?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E9=83=BD=E8=A2=AB=E8=BD=AC=E4=B8=BADouble?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/nis/util/ConfigServiceUtil.java | 87 ++++++++++++++++--- 1 file changed, 73 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/nis/util/ConfigServiceUtil.java b/src/main/java/com/nis/util/ConfigServiceUtil.java index 975ada4fc..38d9a4e40 100644 --- a/src/main/java/com/nis/util/ConfigServiceUtil.java +++ b/src/main/java/com/nis/util/ConfigServiceUtil.java @@ -1,6 +1,8 @@ package com.nis.util; import java.io.File; +import java.io.IOException; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -18,10 +20,80 @@ import org.glassfish.jersey.media.multipart.file.FileDataBodyPart; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.google.gson.TypeAdapter; +import com.google.gson.internal.LinkedTreeMap; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import com.google.gson.stream.JsonWriter; import com.nis.exceptions.MaatConvertException; import com.nis.util.httpclient.ClientUtil; public class ConfigServiceUtil { + private static Gson gson = new GsonBuilder() + .registerTypeAdapter(new TypeToken() {}.getType(), new MapTypeAdapter()) + .registerTypeAdapter(new TypeToken() {}.getType(), new MapTypeAdapter()) + .create(); + public static class MapTypeAdapter extends TypeAdapter { + @Override + public Object read(JsonReader in) throws IOException { + JsonToken token = in.peek(); + switch (token) { + case BEGIN_ARRAY: + List list = new ArrayList(); + in.beginArray(); + while (in.hasNext()) { + list.add(read(in)); + } + in.endArray(); + return list; + + case BEGIN_OBJECT: + Map map = new LinkedTreeMap(); + in.beginObject(); + while (in.hasNext()) { + map.put(in.nextName(), read(in)); + } + in.endObject(); + return map; + + case STRING: + return in.nextString(); + + case NUMBER: + String temp = in.nextString(); + BigDecimal dbNum = new BigDecimal(temp); + BigDecimal maxLong = new BigDecimal(Long.MAX_VALUE); + BigDecimal maxInteger = new BigDecimal(Integer.MAX_VALUE); + // 数字超过long的最大值,返回BigDecimal类型 + if (dbNum.compareTo(maxLong)==1) { + return dbNum; + }else if(dbNum.compareTo(maxInteger)==1){ + long lngNum = Long.parseLong(temp); + return lngNum; + }else{ + int lngNum = Integer.parseInt(temp); + return lngNum; + } + + case BOOLEAN: + return in.nextBoolean(); + + case NULL: + in.nextNull(); + return null; + + default: + throw new IllegalStateException(); + } + } + + @Override + public void write(JsonWriter out, Object value) throws IOException { + // 序列化无需实现 + } + + } /** * 从后台服务获取compileid,groupid,regionid * @param type 1是compileid,2是groupid,3是regionid @@ -45,15 +117,11 @@ public class ConfigServiceUtil { Response response= header.get(); if( response.getStatus() == 200){ result= response.readEntity(String.class); - Gson gson=new GsonBuilder().disableHtmlEscaping() - .excludeFieldsWithoutExposeAnnotation() - .create(); Map resMap = gson.fromJson(result,Map.class); if(!StringUtil.isEmpty(resMap)){ Map dataMap = (Map)resMap.get("data"); if(!StringUtil.isEmpty(dataMap)){ list = (List)dataMap.get("pzIdList"); - }else{ throw new MaatConvertException(":"+response.readEntity(String.class)); } @@ -211,16 +279,7 @@ public class ConfigServiceUtil { } public static void main(String[] args) { try { - //创建连接 - WebTarget wt = ClientUtil.getWebTarger("http://10.0.6.30:8080/maatRest/service/cfg/v1/getCompileId?sourceName=CONFIG_COMPILE&num=1"); - //获取响应结果 - Builder header = wt.request(MediaType.APPLICATION_JSON).header("Content-Type", MediaType.APPLICATION_JSON); - Response response= header.get(); - if( response.getStatus() == 200){ - String result= response.readEntity(String.class); - }else{ - throw new MaatConvertException(":"+response.readEntity(String.class)); - } + getId(1,1); } catch (Exception e) { e.printStackTrace(); }