相关疑难解决方法(0)

JsonMappingException:找不到类型[simple type,class]的合适构造函数:无法从JSON对象实例化

我在尝试获取JSON请求并处理它时收到以下错误:

org.codehaus.jackson.map.JsonMappingException:找不到类型[simple type,class com.myweb.ApplesDO]的合适构造函数:无法从JSON对象实例化(需要添加/启用类型信息?)

这是我要发送的JSON:

{
  "applesDO" : [
    {
      "apple" : "Green Apple"
    },
    {
      "apple" : "Red Apple"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

在Controller中,我有以下方法签名:

@RequestMapping("showApples.do")
public String getApples(@RequestBody final AllApplesDO applesRequest){
    // Method Code
}
Run Code Online (Sandbox Code Playgroud)

AllApplesDO是ApplesDO的包装器:

public class AllApplesDO {

    private List<ApplesDO> applesDO;

    public List<ApplesDO> getApplesDO() {
        return applesDO;
    }

    public void setApplesDO(List<ApplesDO> applesDO) {
        this.applesDO = applesDO;
    }
}
Run Code Online (Sandbox Code Playgroud)

ApplesDO:

public class ApplesDO {

    private String apple;

    public String getApple() {
        return apple;
    }

    public void setApple(String appl) { …
Run Code Online (Sandbox Code Playgroud)

java spring json annotations jackson

422
推荐指数
11
解决办法
40万
查看次数

用Jackson反序列化JSON - 为什么JsonMappingException"没有合适的构造函数"?

我在使用Jackson反序列化JSON字符串时遇到问题(但我将对象序列化为JSON没有问题).

下面我介绍我使用的课程.当我接收一个JSON字符串(一个在其他地方序列化并通过webservice检索的ProtocolContainer)并希望对其进行反序列化时,问题就出现了:

JSON字符串:

{ "DataPacketJSONString":NULL, "DataPacketType": "MyPackage.DataPackets.LoginRequestReply", "的MessageId":6604, "SenderUsername":NULL, "子分组":{ "__类型": "LoginRequestReply:#MyPackage.DataPackets","原因":"错误的传递或用户名","成功":false,"用户名":"用户1"}}

我试着像这样反序列化:

ProtocolContainer ret = ProtocolContainer.Create(jsonString);
Run Code Online (Sandbox Code Playgroud)

并且可以在下面看到在ProtocolContainer中执行的代码.例外:

org.codehaus.jackson.map.JsonMappingException:找不到类型[simple type,class MyPackage.ProtocolContainer]的合​​适构造函数:无法在[Source:java.io.]中从JSON对象实例化(需要添加/启用类型信息?). StringReader @ 4059dcb0; line:1,column:2]

我真的很感激这里的一些输入=)Thx!

ProtocolContainer.java - 封装我的"SubPackets"的容器类:

import java.io.IOException;

import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;

import MyPackage.DataPackets.*;

public class ProtocolContainer 
{
    public String SenderUsername;
    public String DataPacketType;
    public long MessageId;
    public String DataPacketJSONString;
    public DataPacket SubPacket;

    public ProtocolContainer(DataPacket dp)
    {
        DataPacketType = dp.getClass().toString().substring(6);
        SubPacket = dp;
    }

    public String toJSON()
    {
        try {
            if (SubPacket != …
Run Code Online (Sandbox Code Playgroud)

java json jackson

23
推荐指数
2
解决办法
9万
查看次数

标签 统计

jackson ×2

java ×2

json ×2

annotations ×1

spring ×1