jackson.map.exc.UnrecognizedPropertyException:无法识别的字段,未标记为可忽略

时间:2014-02-15 11:59:05

标签: android json jackson

我通过点击url获取json数据。之后我使用Json解析它工作正常并得到结果并在android应用程序中显示。但这次我尝试使用jackson解析器进行快速解析。我得到了这个错误。请帮助我

代码:

ObjectMapper mapper=new ObjectMapper(); jacksonObj=mapper.readValue(jsonResponse,ContactPojo.class);

POJO:

public class ContactPojo {

    String name,email,gender,mobileno;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getMobileno() {
        return mobileno;
    }

    public void setMobileno(String mobileno) {
        this.mobileno = mobileno;
    }

}

错误:

02-15 17:20:20.060: W/System.err(3983): org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "contacts" (Class com.example.sampleuserlogin.ContactPojo), not marked as ignorable
02-15 17:20:20.060: W/System.err(3983):  at [Source: java.io.StringReader@4155f0b8; line: 2, column: 18] (through reference chain: com.example.sampleuserlogin.ContactPojo["contacts"])
02-15 17:20:20.065: W/System.err(3983):     at org.codehaus.jackson.map.deser.StdDeserializationContext.unknownFieldException(StdDeserializationContext.java:267)
02-15 17:20:20.065: W/System.err(3983):     at org.codehaus.jackson.map.deser.std.StdDeserializer.reportUnknownProperty(StdDeserializer.java:673)
02-15 17:20:20.070: W/System.err(3983):     at org.codehaus.jackson.map.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:659)
02-15 17:20:20.070: W/System.err(3983):     at org.codehaus.jackson.map.deser.BeanDeserializer.handleUnknownProperty(BeanDeserializer.java:1361)
02-15 17:20:20.075: W/System.err(3983):     at org.codehaus.jackson.map.deser.BeanDeserializer._handleUnknown(BeanDeserializer.java:725)
02-15 17:20:20.075: W/System.err(3983):     at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:703)
02-15 17:20:20.080: W/System.err(3983):     at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580)
02-15 17:20:20.085: W/System.err(3983):     at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2732)
02-15 17:20:20.085: W/System.err(3983):     at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1863)
02-15 17:20:20.085: W/System.err(3983):     at com.example.sampleuserlogin.JsonParser.jsonParser(JsonParser.java:50)
02-15 17:20:20.090: W/System.err(3983):     at com.example.sampleuserlogin.RetrieveLogindata$Response.onPostExecute(RetrieveLogindata.java:69)
02-15 17:20:20.095: W/System.err(3983):     at com.example.sampleuserlogin.RetrieveLogindata$Response.onPostExecute(RetrieveLogindata.java:1)
02-15 17:20:20.095: W/System.err(3983):     at android.os.AsyncTask.finish(AsyncTask.java:602)
02-15 17:20:20.095: W/System.err(3983):     at android.os.AsyncTask.access$600(AsyncTask.java:156)
02-15 17:20:20.095: W/System.err(3983):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615)
02-15 17:20:20.095: W/System.err(3983):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-15 17:20:20.100: W/System.err(3983):     at android.os.Looper.loop(Looper.java:137)
02-15 17:20:20.100: W/System.err(3983):     at android.app.ActivityThread.main(ActivityThread.java:4507)
02-15 17:20:20.100: W/System.err(3983):     at java.lang.reflect.Method.invokeNative(Native Method)
02-15 17:20:20.100: W/System.err(3983):     at java.lang.reflect.Method.invoke(Method.java:511)
02-15 17:20:20.100: W/System.err(3983):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
02-15 17:20:20.100: W/System.err(3983):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
02-15 17:20:20.105: W/System.err(3983):     at dalvik.system.NativeStart.main(Native Method)

JSON:

{

     "contacts": [

         {

                 "id": "c200",

                 "name": "sai ram",

                 "email": "sai@gmail.com",

                 "address": "xx-xx-xxxx,x - street, x - country",

                 "gender" : "male",

                 "phone": {

                     "mobile": "+91 0000000000",

                     "home": "00 000000",

                     "office": "00 000000"

                 }

         },

         {

                 "id": "c201",

                 "name": "Johnny Depp",

                 "email": "johnny_depp@gmail.com",

                 "address": "xx-xx-xxxx,x - street, x - country",

                 "gender" : "male",

                 "phone": {

                     "mobile": "+91 0000000000",

                     "home": "00 000000",

                     "office": "00 000000"

                 }

         }
]}

1 个答案:

答案 0 :(得分:0)

是的,你有几个问题。

E.g。

你需要一个包装器

public class Contacts {
   public List<ContactPojo> contacts;
}

很少有其他问题

public class ContactPojo {
    Phone phone;
}

public class Phone {
     String mobile;
     String home;
     String office;
}