diff --git a/.gitignore b/.gitignore index d3f5d3e..c91932d 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ gen/ # Local configuration file (sdk path, etc) local.properties +.idea diff --git a/JsonToJava-CLI/.zip b/JsonToJava-CLI/.zip new file mode 100644 index 0000000..ecff8c2 Binary files /dev/null and b/JsonToJava-CLI/.zip differ diff --git a/JsonToJava-CLI/JsonToJava-CLI.iml b/JsonToJava-CLI/JsonToJava-CLI.iml new file mode 100644 index 0000000..62c958f --- /dev/null +++ b/JsonToJava-CLI/JsonToJava-CLI.iml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/JsonToJava-CLI/classes/production/JsonToJava-Lib/org/json/zip/README b/JsonToJava-CLI/classes/production/JsonToJava-Lib/org/json/zip/README new file mode 100644 index 0000000..93e6470 --- /dev/null +++ b/JsonToJava-CLI/classes/production/JsonToJava-Lib/org/json/zip/README @@ -0,0 +1,2 @@ +FOR EVALUATION PURPOSES ONLY. THIS PACKAGE HAS NOT BEEN TESTED ADEQUATELY FOR +PRODUCTION USE. diff --git a/JsonToJava-CLI/com.company.zip b/JsonToJava-CLI/com.company.zip new file mode 100644 index 0000000..8541d11 Binary files /dev/null and b/JsonToJava-CLI/com.company.zip differ diff --git a/JsonToJava-CLI/com.example.api.model.zip b/JsonToJava-CLI/com.example.api.model.zip new file mode 100644 index 0000000..e5c1823 Binary files /dev/null and b/JsonToJava-CLI/com.example.api.model.zip differ diff --git a/JsonToJava-CLI/src/com/jsontojava/cli/Main.java b/JsonToJava-CLI/src/com/jsontojava/cli/Main.java index 88adb18..74ed909 100644 --- a/JsonToJava-CLI/src/com/jsontojava/cli/Main.java +++ b/JsonToJava-CLI/src/com/jsontojava/cli/Main.java @@ -16,14 +16,19 @@ import com.jsontojava.JsonToJava; import com.jsontojava.OutputOption; +import org.json.JSONArray; public class Main { + private static final String PACKAGE_NAME = "com.qiuduanribao.jokemodel"; + private static final String OUTPUT_DIR = "D:\\QiuDuanRiBao\\joke\\app\\src\\main\\java\\"; + private static final String OPTION_PACKAGE = "package"; private static final String OPTION_URL = "url"; private static final String OPTION_ROOT = "class"; private static final String OPTION_GSON = "g"; private static final String OPTION_PARCELABLE = "p"; private static final String OPTION_TO_STRING = "s"; + private static final String OPTION_OUTPUT_DIR = "d"; /** @@ -32,35 +37,41 @@ public class Main { * @throws ParseException */ public static void main(String[] args) throws IOException, ParseException { - Options options = createOptions(); - - CommandLineParser parser = new BasicParser(); - CommandLine cmd = parser.parse( options, args); - JsonToJava jsonToJava = new JsonToJava(); - - jsonToJava.setUrl(cmd.getOptionValue(OPTION_URL)); - jsonToJava.setPackage(cmd.getOptionValue(OPTION_PACKAGE)); - jsonToJava.setBaseType(cmd.getOptionValue(OPTION_ROOT)); - if(cmd.hasOption(OPTION_GSON)){ - jsonToJava.addOutputOption(OutputOption.GSON); - } - if(cmd.hasOption(OPTION_PARCELABLE)){ - jsonToJava.addOutputOption(OutputOption.PARCELABLE); - } - if(cmd.hasOption(OPTION_TO_STRING)){ - jsonToJava.addOutputOption(OutputOption.TO_STRING); - } - - jsonToJava.fetchJson(); - File zipFile = new File(jsonToJava.getPackage() + ".zip"); - OutputStream os = new FileOutputStream(zipFile); - jsonToJava.outputZipFile(os); - os.close(); - System.out.println("\nFinished creating java classes. Your files are located in " + zipFile.getAbsolutePath() ); + JsonToJava.RealmIndexMap.clear(); + JsonToJava.RealmIndexMap.put("Joke", new String[]{"T"}); + JsonToJava.RealmIndexMap.put("Comment", new String[]{"J"}); + JsonToJava.RealmPrimaryKeyMap.clear(); + JsonToJava.RealmPrimaryKeyMap.put("Joke", new String[]{"_id"}); + JsonToJava.RealmPrimaryKeyMap.put("Comment", new String[]{"_id"}); + JsonToJava.RealmPrimaryKeyMap.put("User", new String[]{"_id"}); + JsonToJava.RealmPrimaryKeyMap.put("JokeWeb", new String[]{"_id"}); - + JsonToJava.TypeAliasMap.clear(); + //*********字段T默认设置为Date数据类型 + //JsonToJava.TypeAliasMap.put("json中字段名称gods", new String[]{"要转化为的类型如Comment","指定json中的父类型如Joke"}); + JsonToJava.TypeAliasMap.put("gods", new String[]{"Comment","Joke"}); + JsonToJava.TypeAliasMap.put("mutiFiles", new String[]{"File","Joke"}); + JsonToJava.TypeAliasMap.put("children",new String[]{"Comment","Comment"}); + JsonToJava.TypeAliasMap.put("U",new String[]{"User","Joke"}); + doConvert("http://localhost:5000/joke", "Joke"); + JsonToJava.TypeAliasMap.put("U", new String[]{"User", "Comment"}); + doConvert("http://localhost:5000/comment", "Comment"); + doConvert("http://localhost:5000/user","User"); + doConvert("http://localhost:5000/web","JokeWeb"); + } + private static void doConvert(String url , String baseType) throws IOException, ParseException + { + JsonToJava jsonToJava = new JsonToJava(); + jsonToJava.setUrl(url); + //jsonToJava.addOutputOption(OutputOption.GSON); + jsonToJava.setPackage(PACKAGE_NAME); + jsonToJava.setBaseType(baseType); + jsonToJava.setOutputDir(OUTPUT_DIR); + //jsonToJava.addOutputOption(OutputOption.TO_STRING); + jsonToJava.fetchJson(); + jsonToJava.outputZipFile(); } @@ -76,7 +87,8 @@ private static Options createOptions(){ options.addOption(url); Option pack = OptionBuilder.hasArg().isRequired().withDescription("The package name for the generated classes").create(OPTION_PACKAGE); options.addOption(pack); - + Option dir = OptionBuilder.hasArg().isRequired().withDescription("The package name for the generated classes").create(OPTION_OUTPUT_DIR); + options.addOption(dir); return options; diff --git a/JsonToJava-Lib/JsonToJava-Lib.iml b/JsonToJava-Lib/JsonToJava-Lib.iml new file mode 100644 index 0000000..fb578ef --- /dev/null +++ b/JsonToJava-Lib/JsonToJava-Lib.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/JsonToJava-Lib/src/com/jsontojava/JsonToJava.java b/JsonToJava-Lib/src/com/jsontojava/JsonToJava.java index c431a26..18d8b8f 100644 --- a/JsonToJava-Lib/src/com/jsontojava/JsonToJava.java +++ b/JsonToJava-Lib/src/com/jsontojava/JsonToJava.java @@ -1,9 +1,8 @@ package com.jsontojava; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; +import java.io.*; import java.net.URL; +import java.nio.charset.Charset; import java.util.EnumSet; import java.util.HashMap; import java.util.Map; @@ -18,6 +17,25 @@ import org.modeshape.common.text.Inflector; public class JsonToJava { + public static Map TypeAliasMap = new HashMap(); + public static Map RealmIndexMap = new HashMap(); + public static Map RealmPrimaryKeyMap = new HashMap(); + public static boolean checkTypeContain(String typeName, String memberName, Map map) + { + if (!map.containsKey(typeName)) + return false; + String[] members = map.get(typeName); + for (int i=0; i mTypes; private EnumSet mOutputOptions; + private String mOutputDir; public JsonToJava() { mInflector = new Inflector(); @@ -59,32 +78,21 @@ public void fetchJson() { } } - public OutputStream outputZipFile(OutputStream outputStream) throws IOException{ -// File zipFile = new File(mPackage + ".zip"); + public void outputZipFile() throws IOException{ + String[] packageParts = StringUtils.split(mPackage, PACKAGE_SEPARATOR); String fileSeparater = System.getProperty(PROPERTY_FILE_SEPARATOR); String path = StringUtils.join(packageParts, fileSeparater); -// File dir = new File(path); -// dir.mkdirs(); - ZipOutputStream out = new ZipOutputStream(outputStream); - for (Map.Entry entry : mTypes.entrySet()) { String className = entry.getKey(); NewType type = entry.getValue(); - ZipEntry e = new ZipEntry(path+ fileSeparater + className + FILE_EXTENSION_JAVA); - out.putNextEntry(e); -// File classFile = new File(dir, className + FILE_EXTENSION_JAVA); - IOUtils.write(type.toPojoString(mOutputOptions,this), out); - out.closeEntry(); -// IOUtils.write(classFile, ); + File classFile = new File(mOutputDir + path, className + FILE_EXTENSION_JAVA); + FileOutputStream fileOut = new FileOutputStream(classFile); + IOUtils.write(type.toPojoString(mOutputOptions, this), fileOut); + fileOut.close(); System.out.println("Created " + className + FILE_EXTENSION_JAVA); -// System.out.println("Contract for " + className); -// System.out.println(type.toContract() + "\n\n"); } - out.finish(); - return outputStream; -// System.out.println("\nFinished creating java classes. Your files are located in " + zipFile.getAbsolutePath() ); } @@ -112,6 +120,11 @@ public void setPackage(String package1) { mPackage = package1; } + public void setOutputDir(String dir) + { + mOutputDir = dir; + } + public String getBaseType() { return mBaseType; } @@ -139,7 +152,8 @@ private Object getJsonFromUrl(String url) throws IOException { // BufferedReader reader = new BufferedReader() InputStream in = new URL(url).openStream(); - String jsonString = IOUtils.toString(in); + String jsonString = IOUtils.toString(in, Charset.forName("utf-8")); + jsonString = jsonString.replace('\n',' '); try { retVal = new JSONObject(jsonString); } catch (JSONException e) { @@ -149,9 +163,14 @@ private Object getJsonFromUrl(String url) throws IOException { return retVal; } - private Member generateMember(String key, Object current) { + private Member generateMember(String key, Object current,String typeName) { Member.Builder memberBuilder = new Member.Builder(); + memberBuilder.setTypeName(typeName); + if (JsonToJava.TypeAliasMap.containsKey(key)) { + key = JsonToJava.TypeAliasMap.get(key)[0]; + } + String singular = mInflector.singularize(key); if(singular.contains("$")){ @@ -216,6 +235,14 @@ private Member generateMember(String key, Object current) { memberBuilder.setType(className); } else { String clazz = TypeUtils.getPrimitiveType(current); + if(className.equals("T")) + { + clazz = TypeUtils.PRIMITIVE_Date; + } + + if (clazz.equals("Long")) { + clazz = TypeUtils.PRIMITIVE_LONG; + } if (clazz.equals(TypeUtils.TYPE_NULL)) { clazz = TypeUtils.TYPE_STRING; @@ -225,7 +252,7 @@ private Member generateMember(String key, Object current) { } memberBuilder.addModifier("private"); - return memberBuilder.build(); + return memberBuilder.build( ); } private NewType generateClass(JSONObject obj, String typeName) { @@ -236,13 +263,12 @@ private NewType generateClass(JSONObject obj, String typeName) { if(keys != null){ for (String s : keys) { Object current = obj.opt(s); - Member m = generateMember(s, current); + Member m = generateMember(s, current,typeName); typeBuilder.addMember(m); if (current instanceof JSONArray) { typeBuilder.addImport(NewType.IMPORT_JAVA_UTIL_LIST); } - } } return typeBuilder.build(); diff --git a/JsonToJava-Lib/src/com/jsontojava/Member.java b/JsonToJava-Lib/src/com/jsontojava/Member.java index 84f0d98..cb95d0d 100644 --- a/JsonToJava-Lib/src/com/jsontojava/Member.java +++ b/JsonToJava-Lib/src/com/jsontojava/Member.java @@ -1,6 +1,7 @@ package com.jsontojava; import java.util.HashSet; +import java.util.Map; import java.util.Set; import org.apache.commons.lang3.StringUtils; @@ -14,6 +15,16 @@ public class Member { private String mName; private String mDisplayName; + public String getmTypeName() { + return mTypeName; + } + + public void setmTypeName(String mTypeName) { + this.mTypeName = mTypeName; + } + + private String mTypeName; + public static class Builder { private static final Inflector mInflector = new Inflector(); private Set mModifiers; @@ -23,6 +34,7 @@ public static class Builder { private String mName; private String mDisplayName; private boolean mPlural; + private String mTypeName; public Builder() { mPlural = false; @@ -32,7 +44,7 @@ public Builder() { public Member.Builder setPlural(){ mPlural = true; if(mType != null){ - mType = "List<"+mType+">"; + mType = "RealmList<"+mType+">"; } if(mName != null){ mName = mInflector.pluralize(mName); @@ -55,17 +67,35 @@ public Member.Builder setName(String name) { public Member.Builder setType(String type) { if(mPlural){ - mType = "List<" + type + ">"; + mType = "RealmList<" + type + ">"; }else{ + if (type.equals("Long")) + { + int x = 2; + x ++; + } mType = type; } return this; } + public Member.Builder setTypeName(String typeName) { + mTypeName = typeName; + return this; + } + public Member.Builder setJsonField(String jsonField) { mJsonField = jsonField; - mFieldConstantName = "FIELD_" + mInflector.underscore(jsonField).toUpperCase(); + + for (Map.Entry entry : JsonToJava.TypeAliasMap.entrySet()) + { + if (entry.getValue()[0].equals(mJsonField) && entry.getValue()[1].equals(mTypeName)) + { + mJsonField = entry.getKey(); + } + } + mFieldConstantName = "FIELD_" + mInflector.underscore(mJsonField).toUpperCase(); return this; } @@ -75,7 +105,7 @@ public Member.Builder addModifier(String modifier) { } public Member build(){ - if((mName.equalsIgnoreCase("mid") || mName.equalsIgnoreCase("muniqueid")) && mType.equalsIgnoreCase("int")){ + if(mName.equalsIgnoreCase("m_id") && mType.equalsIgnoreCase("int")){ mType = "long"; } Member member = new Member(); @@ -85,6 +115,7 @@ public Member build(){ member.setJsonField(mJsonField); member.setDisplayName(mDisplayName); member.mModifiers = mModifiers; + member.setmTypeName(mTypeName); return member; } @@ -108,9 +139,18 @@ public int hashCode() { return getName().hashCode(); } + //棣栧瓧姣嶈浆澶у啓 + public static String toUpperCaseFirstOne(String s) + { + if(Character.isUpperCase(s.charAt(0))) + return s; + else + return (new StringBuilder()).append(Character.toUpperCase(s.charAt(0))).append(s.substring(1)).toString(); + } + public String getGetterSignature() { StringBuilder sBuilder = new StringBuilder(); - String methodName = StringUtils.removeStart(getName(), "m"); + String methodName =getName(); String setPrefix = "get"; try{ @@ -120,17 +160,29 @@ public String getGetterSignature() { }catch (NullPointerException e){ e.printStackTrace(); } - + methodName = toUpperCaseFirstOne(methodName); sBuilder.append(setPrefix).append(methodName).append("()"); return sBuilder.toString(); } + public static String captureName(String name) { + name = name.substring(0, 1).toUpperCase() + name.substring(1); + return name; + } + public String getSetter(Inflector inflector) { StringBuilder sBuilder = new StringBuilder(); - String methodName = StringUtils.removeStart(getName(), "m"); - String nameNoPrefix = inflector.camelCase(methodName, false); - sBuilder.append(" public void set").append(methodName).append("(").append(getType()).append(" ") - .append(nameNoPrefix).append(") {\n ").append(getName()).append(" = ").append(nameNoPrefix) + String methodName = getName(); + String nameNoPrefix = methodName; + try { + nameNoPrefix = inflector.camelCase(methodName, false); + } + catch (Exception ex) + { + //ex.printStackTrace(); + } + sBuilder.append(" public void set").append(toUpperCaseFirstOne(methodName)).append("(").append(getType()).append(" ") + .append(nameNoPrefix).append(") {\n ").append("this.").append(getName()).append(" = ").append(nameNoPrefix) .append(";").append("\n }\n\n"); return sBuilder.toString(); } @@ -168,7 +220,8 @@ public void setType(String type) { } public String getName() { - return mName; + //return mName; + return getJsonField(); } public void setName(String name) { diff --git a/JsonToJava-Lib/src/com/jsontojava/NewType.java b/JsonToJava-Lib/src/com/jsontojava/NewType.java index e44ba44..cc5f1b9 100644 --- a/JsonToJava-Lib/src/com/jsontojava/NewType.java +++ b/JsonToJava-Lib/src/com/jsontojava/NewType.java @@ -13,6 +13,7 @@ public class NewType { private static final String ONE_TAB = " "; private static final String TWO_TABS = ONE_TAB+ONE_TAB; public static final String IMPORT_JAVA_UTIL_LIST = "java.util.List"; + public static final String IMPORT_JAVA_UTIL_DATE= "java.util.Date"; public static final String IMPORT_JAVA_UIIL_ARRAYLIST = "java.util.ArrayList"; public static final String IMPORT_ANDROID_OS_PARCELABLE = "android.os.Parcelable"; public static final String IMPORT_ANDROID_OS_PARCEL = "android.os.Parcel"; @@ -112,7 +113,7 @@ public String getColumns(){ // column names for(Member member:members){ - String simpleName = StringUtils.removeStart(member.getName(), "m"); + String simpleName = member.getName(); String underscoreMember = mInflector.underscore(simpleName); sb.append(ONE_TAB).append(PUBLIC_STATIC_FINAL).append("String COLUMN_NAME_").append(underscoreMember.toUpperCase()).append(" = \"").append(underscoreMember.toLowerCase()).append("\";\n\n"); } @@ -122,6 +123,11 @@ public String getColumns(){ } public String toPojoString(EnumSet options,JsonToJava jsonToJava) { + imports.add(IMPORT_JAVA_UTIL_DATE); + imports.add("io.realm.RealmList"); + imports.add("io.realm.RealmObject"); + imports.add("io.realm.annotations.Index"); + imports.add("io.realm.annotations.PrimaryKey"); if (options.contains(OutputOption.PARCELABLE)) { imports.add(IMPORT_ANDROID_OS_PARCEL); imports.add(IMPORT_ANDROID_OS_PARCELABLE); @@ -140,6 +146,7 @@ public String toPojoString(EnumSet options,JsonToJava jsonToJava) } sBuilder.append("\n\n"); sBuilder.append("public class ").append(name); + sBuilder.append(" extends RealmObject"); if (options.contains(OutputOption.PARCELABLE)) { sBuilder.append(" implements Parcelable"); } @@ -149,8 +156,9 @@ public String toPojoString(EnumSet options,JsonToJava jsonToJava) // Insert the static fields to define the json names // eg. private static final String FIELD_FIRST_NAME = "first_name"; for (Member member : members) { + sBuilder.append( - ONE_TAB+"private static final String " + member.getFieldName() + " = \"" + member.getJsonField() + "\";") + ONE_TAB+"public static final String " + member.getFieldName() + " = \"" + member.getJsonField() + "\";") .append("\n"); } sBuilder.append("\n\n"); @@ -161,6 +169,14 @@ public String toPojoString(EnumSet options,JsonToJava jsonToJava) if (options.contains(OutputOption.GSON)) { sBuilder.append(ONE_TAB+"@SerializedName(" + member.getFieldName() + ")\n"); } + if (JsonToJava.checkTypeContain(name, member.getName(), JsonToJava.RealmIndexMap)) + { + sBuilder.append(ONE_TAB+"@Index\n"); + } + if (JsonToJava.checkTypeContain(name,member.getName(),JsonToJava.RealmPrimaryKeyMap)) + { + sBuilder.append(ONE_TAB+"@PrimaryKey\n"); + } sBuilder.append(ONE_TAB+"private " + member.getType() + " " + member.getName() + ";").append("\n"); } sBuilder.append("\n\n"); @@ -189,7 +205,7 @@ public String toPojoString(EnumSet options,JsonToJava jsonToJava) } private String generateExtraMethods() { - String type = StringUtils.removeEnd(StringUtils.removeStart(name, "List<"), ">"); + String type = StringUtils.removeEnd(StringUtils.removeStart(name, "RealmList<"), ">"); for (Member member : members) { if (member.getName().equalsIgnoreCase("mId") || member.getName().equalsIgnoreCase("mUniqueId")) { StringBuilder sb = new StringBuilder(); @@ -211,7 +227,7 @@ private String generateExtraMethods() { sb.append(ONE_TAB+"public int hashCode(){\n"); sb.append(TWO_TABS+"return "); if(member.getType().equals("long")){ - sb.append("((Long)"); + sb.append("((long)"); } sb.append(member.getName()); if(member.getType().equals("long")){ @@ -251,7 +267,7 @@ private String generateParcelableCode(Map types) { for (Member member : members) { if (member.getType().startsWith("List")) { - String type = StringUtils.removeEnd(StringUtils.removeStart(member.getType(), "List<"), ">"); + String type = StringUtils.removeEnd(StringUtils.removeStart(member.getType(), "RealmList<"), ">"); if (TypeUtils.isPrimitiveType(type)) { sb.append(TWO_TABS+"in.readArrayList(").append(type).append(".class.getClassLoader());"); @@ -297,7 +313,7 @@ private String generateParcelableCode(Map types) { for (Member member : members) { sb.append(ONE_TAB+ONE_TAB); if (member.getType().startsWith("List")) { - String type = StringUtils.removeEnd(StringUtils.removeStart(member.getType(), "List<"), ">"); + String type = StringUtils.removeEnd(StringUtils.removeStart(member.getType(), "RealmList<"), ">"); if (TypeUtils.isPrimitiveType(type)) { sb.append("dest.writeList(").append(member.getName()).append(");"); diff --git a/JsonToJava-Lib/src/com/jsontojava/TypeUtils.java b/JsonToJava-Lib/src/com/jsontojava/TypeUtils.java index 24a86cd..781e386 100644 --- a/JsonToJava-Lib/src/com/jsontojava/TypeUtils.java +++ b/JsonToJava-Lib/src/com/jsontojava/TypeUtils.java @@ -1,14 +1,18 @@ package com.jsontojava; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.Arrays; +import java.util.Date; public class TypeUtils { public static final String PRIMITIVE_LONG = "long"; public static final String PRIMITIVE_DOUBLE = "double"; + public static final String PRIMITIVE_Date= "Date"; public static final String PRIMITIVE_INT = "int"; public static final String PRIMITIVE_BOOLEAN = "boolean"; - public static final String TYPE_LONG = "Long"; + public static final String TYPE_LONG = "long"; public static final String TYPE_STRING = "String"; public static final String TYPE_DOUBLE = "Double"; public static final String TYPE_INTEGER = "Integer"; @@ -76,21 +80,30 @@ public static String getPrimitiveType(Object current) { clazz = PRIMITIVE_DOUBLE; } if (clazz.equals(TYPE_STRING)) { - if(((String) current).matches("^[0-9]+(\\.[0-9]+)?$")){ + try + { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = sdf.parse((String) current); + clazz = PRIMITIVE_Date; + } + catch (ParseException e) + { + if(((String) current).matches("^[0-9]+(\\.[0-9]+)?$")){ - try { - long l = Long.parseLong((String) current); - clazz = PRIMITIVE_LONG; - - if (Math.abs(l) < Integer.MAX_VALUE / 2) { - clazz = PRIMITIVE_INT; - } - } catch (NumberFormatException e) { try { - Double.parseDouble((String) current); - clazz = PRIMITIVE_DOUBLE; - } catch (NumberFormatException e2) { - + long l = Long.parseLong((String) current); + clazz = PRIMITIVE_LONG; + + if (Math.abs(l) < Integer.MAX_VALUE / 2) { + clazz = PRIMITIVE_INT; + } + } catch (NumberFormatException ex) { + try { + Double.parseDouble((String) current); + clazz = PRIMITIVE_DOUBLE; + } catch (NumberFormatException e2) { + + } } } } diff --git a/JsonToJavaGsonSample/JsonToJavaGsonSample.iml b/JsonToJavaGsonSample/JsonToJavaGsonSample.iml new file mode 100644 index 0000000..365ea3d --- /dev/null +++ b/JsonToJavaGsonSample/JsonToJavaGsonSample.iml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/JsonToJavaGsonSample/libs/commons-io-2.4.jar b/JsonToJavaGsonSample/libs/commons-io-2.4.jar new file mode 100644 index 0000000..90035a4 Binary files /dev/null and b/JsonToJavaGsonSample/libs/commons-io-2.4.jar differ diff --git a/JsonToJavaGsonSample/libs/gson-2.4.jar b/JsonToJavaGsonSample/libs/gson-2.4.jar new file mode 100644 index 0000000..8b95cc9 Binary files /dev/null and b/JsonToJavaGsonSample/libs/gson-2.4.jar differ diff --git a/JsonToJavaGsonSample/src/com/company/File.java b/JsonToJavaGsonSample/src/com/company/File.java new file mode 100644 index 0000000..22269c2 --- /dev/null +++ b/JsonToJavaGsonSample/src/com/company/File.java @@ -0,0 +1,82 @@ +package com.company; + +import java.util.Date; + + +public class File{ + + private static final String FIELD_HEIGHT = "height"; + private static final String FIELD_IS_GIF = "isGif"; + private static final String FIELD_WIDTH = "width"; + private static final String FIELD_SMALL = "small"; + private static final String FIELD_LARGE = "large"; + private static final String FIELD_VIDEO = "video"; + + + private int height; + private boolean isGif; + private int width; + private String small; + private String large; + private Video video; + + + public File(){ + + } + + public void set_height(int height) { + height = height; + } + + public int get_height() { + return height; + } + + public void set_isGif(boolean isGif) { + isGif = isGif; + } + + public boolean isisGif() { + return isGif; + } + + public void set_width(int width) { + width = width; + } + + public int get_width() { + return width; + } + + public void set_small(String small) { + small = small; + } + + public String get_small() { + return small; + } + + public void set_large(String large) { + large = large; + } + + public String get_large() { + return large; + } + + public void set_video(Video video) { + video = video; + } + + public Video get_video() { + return video; + } + + @Override + public String toString(){ + return "height = " + height + ", isGif = " + isGif + ", width = " + width + ", small = " + small + ", large = " + large + ", video = " + video; + } + + +} \ No newline at end of file diff --git a/JsonToJavaGsonSample/src/com/company/God.java b/JsonToJavaGsonSample/src/com/company/God.java new file mode 100644 index 0000000..d13078e --- /dev/null +++ b/JsonToJavaGsonSample/src/com/company/God.java @@ -0,0 +1,92 @@ +package com.company; + +import java.util.Date; + + +public class God{ + + private static final String FIELD_T = "T"; + private static final String FIELD_TEXT = "text"; + private static final String FIELD_LIKE_C = "likeC"; + private static final String FIELD__ID = "_id"; + private static final String FIELD_JOKE = "joke"; + private static final String FIELD_BURY_C = "buryC"; + private static final String FIELD_USER = "user"; + + + private Date T; + private String text; + private int likeC; + private Long _id; + private Long joke; + private int buryC; + private User user; + + + public God(){ + + } + + public void set_T(Date T) { + T = T; + } + + public Date get_T() { + return T; + } + + public void set_text(String text) { + text = text; + } + + public String get_text() { + return text; + } + + public void set_likeC(int likeC) { + likeC = likeC; + } + + public int get_likeC() { + return likeC; + } + + public void set__id(Long _id) { + _id = _id; + } + + public Long get__id() { + return _id; + } + + public void set_joke(Long joke) { + joke = joke; + } + + public Long get_joke() { + return joke; + } + + public void set_buryC(int buryC) { + buryC = buryC; + } + + public int get_buryC() { + return buryC; + } + + public void set_user(User user) { + user = user; + } + + public User get_user() { + return user; + } + + @Override + public String toString(){ + return "T = " + T + ", text = " + text + ", likeC = " + likeC + ", _id = " + _id + ", joke = " + joke + ", buryC = " + buryC + ", user = " + user; + } + + +} \ No newline at end of file diff --git a/JsonToJavaGsonSample/src/com/company/Joke.java b/JsonToJavaGsonSample/src/com/company/Joke.java new file mode 100644 index 0000000..fe50084 --- /dev/null +++ b/JsonToJavaGsonSample/src/com/company/Joke.java @@ -0,0 +1,143 @@ +package com.company; + +import java.util.List; +import java.util.Date; + + +public class Joke{ + + private static final String FIELD_T = "T"; + private static final String FIELD_COLLECT_C = "collectC"; + private static final String FIELD_TEXT = "text"; + private static final String FIELD_SHARE_C = "shareC"; + private static final String FIELD__ID = "_id"; + private static final String FIELD_LIKE_C = "likeC"; + private static final String FIELD_FILE = "file"; + private static final String FIELD_CMT_C = "cmtC"; + private static final String FIELD_PLAY_C = "playC"; + private static final String FIELD_BURY_C = "buryC"; + private static final String FIELD_GODS = "gods"; + private static final String FIELD_USER = "user"; + + + private Date T; + private int collectC; + private String text; + private int shareC; + private Long _id; + private int likeC; + private File file; + private int cmtC; + private int playC; + private int buryC; + private List gods; + private User user; + + + public Joke(){ + + } + + public void set_T(Date T) { + T = T; + } + + public Date get_T() { + return T; + } + + public void set_collectC(int collectC) { + collectC = collectC; + } + + public int get_collectC() { + return collectC; + } + + public void set_text(String text) { + text = text; + } + + public String get_text() { + return text; + } + + public void set_shareC(int shareC) { + shareC = shareC; + } + + public int get_shareC() { + return shareC; + } + + public void set__id(Long _id) { + _id = _id; + } + + public Long get__id() { + return _id; + } + + public void set_likeC(int likeC) { + likeC = likeC; + } + + public int get_likeC() { + return likeC; + } + + public void set_file(File file) { + file = file; + } + + public File get_file() { + return file; + } + + public void set_cmtC(int cmtC) { + cmtC = cmtC; + } + + public int get_cmtC() { + return cmtC; + } + + public void set_playC(int playC) { + playC = playC; + } + + public int get_playC() { + return playC; + } + + public void set_buryC(int buryC) { + buryC = buryC; + } + + public int get_buryC() { + return buryC; + } + + public void set_gods(List gods) { + gods = gods; + } + + public List get_gods() { + return gods; + } + + public void set_user(User user) { + user = user; + } + + public User get_user() { + return user; + } + + @Override + public String toString(){ + return "T = " + T + ", collectC = " + collectC + ", text = " + text + ", shareC = " + shareC + ", _id = " + _id + ", likeC = " + likeC + ", file = " + file + ", cmtC = " + cmtC + ", playC = " + playC + ", buryC = " + buryC + ", gods = " + gods + ", user = " + user; + } + + +} \ No newline at end of file diff --git a/JsonToJavaGsonSample/src/com/company/Main.java b/JsonToJavaGsonSample/src/com/company/Main.java new file mode 100644 index 0000000..39bf6e7 --- /dev/null +++ b/JsonToJavaGsonSample/src/com/company/Main.java @@ -0,0 +1,39 @@ +package com.company; + +import org.apache.commons.io.IOUtils; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.nio.charset.Charset; + +import com.google.gson.Gson; +import com.google.gson.*; +import com.google.gson.reflect.TypeToken; +import java.util.List; +public class Main { + + private static Object getJsonFromUrl(String url) throws IOException { + +// OkHttpClient client = new OkHttpClient(); +// URLConnection connection = client.open(new URL(url)); +// BufferedReader reader = new BufferedReader() + InputStream in = new URL(url).openStream(); + String jsonString = IOUtils.toString(in, Charset.forName("utf-8")); + Gson gson = new Gson(); + List jokes = gson.fromJson(jsonString, new TypeToken>() {}.getType()); + System.out.println(jokes.get(0).get_text()); + return null; + } + + public static void main(String[] args) { + // write your code here + try { + getJsonFromUrl("http://localhost:5000/"); + } + catch (Exception e) + { + e.printStackTrace(); + } + } +} diff --git a/JsonToJavaGsonSample/src/com/company/User.java b/JsonToJavaGsonSample/src/com/company/User.java new file mode 100644 index 0000000..6d0d575 --- /dev/null +++ b/JsonToJavaGsonSample/src/com/company/User.java @@ -0,0 +1,72 @@ +package com.company; + +import java.util.Date; + + +public class User{ + + private static final String FIELD_SEX = "sex"; + private static final String FIELD_DESC = "desc"; + private static final String FIELD__ID = "_id"; + private static final String FIELD_NAME = "name"; + private static final String FIELD_AVATAR = "avatar"; + + + private int sex; + private String desc; + private Long _id; + private String name; + private String avatar; + + + public User(){ + + } + + public void set_sex(int sex) { + sex = sex; + } + + public int get_sex() { + return sex; + } + + public void set_desc(String desc) { + desc = desc; + } + + public String get_desc() { + return desc; + } + + public void set__id(Long _id) { + _id = _id; + } + + public Long get__id() { + return _id; + } + + public void set_name(String name) { + name = name; + } + + public String get_name() { + return name; + } + + public void set_avatar(String avatar) { + avatar = avatar; + } + + public String get_avatar() { + return avatar; + } + + @Override + public String toString(){ + return "sex = " + sex + ", desc = " + desc + ", _id = " + _id + ", name = " + name + ", avatar = " + avatar; + } + + +} \ No newline at end of file diff --git a/JsonToJavaGsonSample/src/com/company/Video.java b/JsonToJavaGsonSample/src/com/company/Video.java new file mode 100644 index 0000000..e0ab5cc --- /dev/null +++ b/JsonToJavaGsonSample/src/com/company/Video.java @@ -0,0 +1,52 @@ +package com.company; + +import java.util.Date; + + +public class Video{ + + private static final String FIELD_DURATION = "duration"; + private static final String FIELD_HIGH = "high"; + private static final String FIELD_LOW = "low"; + + + private int duration; + private String high; + private String low; + + + public Video(){ + + } + + public void set_duration(int duration) { + duration = duration; + } + + public int get_duration() { + return duration; + } + + public void set_high(String high) { + high = high; + } + + public String get_high() { + return high; + } + + public void set_low(String low) { + low = low; + } + + public String get_low() { + return low; + } + + @Override + public String toString(){ + return "duration = " + duration + ", high = " + high + ", low = " + low; + } + + +} \ No newline at end of file