jackson.databind 异常的临时解决方案

找不到finalData的具体位置 于是 用了一个临时解决方案:

package hero;

import java.io.Serializable;

import org.json.JSONException;
import org.json.JSONObject;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

import door.IFighterImage;
import door.IPet;
import door.IPlayer;
import door.IPlayerRoleFighter;
import fight.FightData;
import fight.Fighter;

@JsonIgnoreProperties(value =
{ "fightData", "finalData", "finData" })
public class FighterImage extends Fighter implements IFighterImage,
		Serializable
{
	private static final long serialVersionUID = -7938551050003282250L;

	/** 镜像类型 0-人物 1-宠物 2-召唤兽 */
	private int fighterType = 0;

	private int masterId = 0;

	/** 数据STR JSON用 */
	public String fightDataStr = "";

	public FighterImage()
	{
	}

	public FighterImage(IPlayer user)
	{
		this.fighterType = TYPE_HERO;
		this.masterId = user.getRoleId();
		IPlayerRoleFighter roleFighter = user.getUsedRoleFighter();
		if (roleFighter != null)
		{
			this.fightData = (FightData) roleFighter.getFightData();
		}
	}

	public FighterImage(IPet p, int masterId)
	{
		this.fighterType = TYPE_PET;
		this.masterId = masterId;
		if (p != null)
		{
			this.fightData = (FightData) p.getFightData();
		}
	}

	public String getFightDataStr()
	{
		try
		{
			StringBuilder sb = new StringBuilder();
			for (int key : Fight_ARRS)
			{
				sb.append(key);
				sb.append("=");
				sb.append(this.fightData.getValue(key));
				sb.append(",");
			}
			this.fightDataStr = sb.toString();
			return this.fightDataStr.substring(0,
					this.fightDataStr.length() - 1);
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		return this.fightDataStr;
	}

	public void strToFightData()
	{
		try
		{
			this.fightData = new FightData();
			for (String kv : this.fightDataStr.split(","))
			{
				this.fightData.setValue(Integer.parseInt(kv.split("=")[0]),
						Double.parseDouble(kv.split("=")[1]));
			}
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}

	public void setFightDataStr(String fightDataStr)
	{
		this.fightDataStr = fightDataStr;
	}

	public int getMasterId()
	{
		return masterId;
	}

	public int getFighterType()
	{
		return fighterType;
	}

	public void setFighterType(int fighterType)
	{
		this.fighterType = fighterType;
	}

	public void setMasterId(int masterId)
	{
		this.masterId = masterId;
	}

	@Override
	public int getGrade()
	{
		return 0;
	}

	@Override
	public void setLv(int lv)
	{
	}

	@Override
	public void bytesWriteToFront(JSONObject js) throws JSONException
	{
	}

	@Override
	public String getName()
	{
		return null;
	}

	@Override
	public void setPerBlood(int he, int blood)
	{
	}

	@Override
	public String getStyle()
	{
		return null;
	}

	@Override
	public void bytesWriteZbToFront(JSONObject js) throws JSONException
	{
	}

	@Override
	public void bytesWriteSkillToFront(JSONObject js) throws JSONException
	{
	}
}
用一个基本类型 替代了引用类型 规避掉了找不到的属性对象

之后又报了一个递归的错误

直接忽略掉属性:

@JsonIgnoreProperties(value =
{ "newinstance" })
public class SkillModel extends GameData
{
	/** 技能id */
	public int id = 0;

	/** 技能名字 */
	public String name = null;


于是 解决了所有问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值