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