0
현재 JSON과 내 객체를 구문 분석하는 데 Jackson을 사용하고 있습니다. 현재 개체를 JSON으로 변환하는 것은 객체에서 toString()을 호출 할 때 작동합니다. 그러나 JSON을 다시 객체로 변환하는 것은 점점 어려워지고 있습니다.Jackson을 사용하여 JSON을 객체로 구문 분석
java.lang.RuntimeException: Unable to start activity ComponentInfo{appuccino.droidpacks/com.appuccino.droidpacks.activities.MainActivity}: java.lang.RuntimeException: bad input {
"boughtAppIDs" : [ 1, 2, 3, 4, 5 ],
"boughtAppPacks" : [ {
"gold" : true,
"id" : 1
}, {
"gold" : false,
"id" : 2
}, {
"gold" : true,
"id" : 6
} ]
}
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: bad input {
"boughtAppIDs" : [ 1, 2, 3, 4, 5 ],
"boughtAppPacks" : [ {
"gold" : true,
"id" : 1
}, {
"gold" : false,
"id" : 2
}, {
"gold" : true,
"id" : 6
} ]
}
at com.appuccino.droidpacks.objects.UserAppData.appDataFromJSON(UserAppData.java:48)
at com.appuccino.droidpacks.activities.MainActivity.onCreate(MainActivity.java:108)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
... 11 more
:이 작업을 테스트하기 위해, 나는 다음과 같은 라인을 실행하고 있습니다 :이 실행할 때,
UserAppData test = UserAppData.appDataFromJSON(dummyUserAppData.toString());
이것은 (dummyUserAppData)와 함께 시작된 동일한 개체를 반환해야을, 나는 다음과 같은 오류가 발생합니다
public class UserAppData {
public int[] boughtAppIDs;
public UserPackData[] boughtAppPacks;
public UserAppData(int[] list, UserPackData[] packData){
boughtAppIDs = list;
boughtAppPacks = packData;
}
public static UserAppData appDataFromJSON(String json){
if (json == null || json.isEmpty()) {
return null;
}
ObjectMapper mapper = new ObjectMapper();
ObjectWriter writer = mapper.writerWithDefaultPrettyPrinter();
UserAppData myObject;
try {
myObject = mapper.readValue(json, UserAppData.class);
return myObject;
}
catch ( JsonParseException e) {
e.printStackTrace();
return null;
}
catch ( Exception e) {
e.printStackTrace();
throw new RuntimeException("bad input " + json);
}
}
@Override
public String toString(){
//ObjectWriter ow = new ObjectMapper().writer();//.withDefaultPrettyPrinter();
ObjectMapper mapper = new ObjectMapper();
try {
return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(this);
//return ow.writeValueAsString(this);
} catch (JsonProcessingException e) {
e.printStackTrace();
return null;
}
}
}
0,123,516 : dummyAppUserData는 클래스 UserAppData의이고, 다음과 같이 내가 사용클래스는
그리고이 UserAppData가의 인스턴스를 가지고있는 작은 클래스 UserPackData입니다 :
이public class UserPackData {
public int id;
public boolean gold;
public UserPackData(int i, boolean g){
id = i;
gold = g;
}
}
무엇입니까 것을 내가 잘못은?
'e.printStackTrace();'의 출력을 보여주세요. –