找不到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;
于是 解决了所有问题