我的应用程序有一个对象GameCards,它包含一副纸牌(根据两副普通纸牌混洗),我通过一个调用JacksonobjectMapper的转换器将它存储为字符串。
在我存储它之前,对象看起来像这样:
[gameDeck=[Card [kleur=harten, waarde=_8], Card [kleur=schoppen, waarde=vrouw], Card [kleur=harten, waarde=heer], Card [kleur=harten, waarde=_5], Card [kleur=schoppen, waarde=_9], Card [kleur=harten, waarde=boer], Card [kleur=harten, waarde=_3], Card [kleur=klaver, waarde=_4], Card [kleur=ruiten, waarde=aas], Card [kleur=ruiten, waarde=_4], Card [kleur=schoppen, waarde=_3], Card [kleur=ruiten, waarde=heer], Card [kleur=ruiten, waarde=_5], Card [kleur=harten, waarde=_4], Card [kleur=schoppen, waarde=_9], Card [kleur=klaver, waarde=_5], Card [kleur=ruiten, waarde=_5], Card [kleur=klaver, waarde=_9], Card [kleur=schoppen, waarde=_8], Card [kleur=harten, waarde=aas], Card [kleur=ruiten, waarde=aas], Card [kleur=harten, waarde=vrouw], Card [kleur=ruiten, waarde=_2], Card [kleur=ruiten, waarde=vrouw], Card [kleur=schoppen, waarde=_7], Card [kleur=schoppen, waarde=_7], Card [kleur=harten, waarde=_6], Card [kleur=schoppen, waarde=_4], Card [kleur=schoppen, waarde=vrouw], Card [kleur=schoppen, waarde=boer], Card [kleur=harten, waarde=vrouw], Card [kleur=klaver, waarde=boer], Card [kleur=klaver, waarde=_6], Card [kleur=ruiten, waarde=_6], Card [kleur=harten, waarde=_9], Card [kleur=schoppen, waarde=heer], Card [kleur=ruiten, waarde=_7], Card [kleur=schoppen, waarde=_2], Card [kleur=ruiten, waarde=boer], Card [kleur=schoppen, waarde=_5], Card [kleur=schoppen, waarde=heer], Card [kleur=schoppen, waarde=aas], Card [kleur=harten, waarde=_3], Card [kleur=ruiten, waarde=_2], Card [kleur=ruiten, waarde=_8], Card [kleur=schoppen, waarde=_6], Card [kleur=ruiten, waarde=_4], Card [kleur=harten, waarde=boer], Card [kleur=harten, waarde=_8], Card [kleur=klaver, waarde=_8], Card [kleur=klaver, waarde=_3], Card [kleur=klaver, waarde=_7], Card [kleur=ruiten, waarde=_7], Card [kleur=ruiten, waarde=vrouw], Card [kleur=schoppen, waarde=boer], Card [kleur=harten, waarde=_5], Card [kleur=schoppen, waarde=_6], Card [kleur=klaver, waarde=_2], Card [kleur=harten, waarde=_4], Card [kleur=schoppen, waarde=_2], Card [kleur=klaver, waarde=vrouw], Card [kleur=klaver, waarde=_2], Card [kleur=harten, waarde=_2], Card [kleur=klaver, waarde=heer], Card [kleur=klaver, waarde=_7], Card [kleur=harten, waarde=_9], Card [kleur=ruiten, waarde=_6], Card [kleur=klaver, waarde=aas], Card [kleur=klaver, waarde=_4], Card [kleur=ruiten, waarde=heer], Card [kleur=schoppen, waarde=_3], Card [kleur=klaver, waarde=aas], Card [kleur=ruiten, waarde=_3], Card [kleur=klaver, waarde=_6], Card [kleur=klaver, waarde=_5], Card [kleur=schoppen, waarde=_8], Card [kleur=harten, waarde=aas], Card [kleur=harten, waarde=heer], Card [kleur=klaver, waarde=_8], Card [kleur=ruiten, waarde=_8], Card [kleur=schoppen, waarde=_5], Card [kleur=ruiten, waarde=_3], Card [kleur=klaver, waarde=_9], Card [kleur=ruiten, waarde=boer], Card [kleur=schoppen, waarde=_4]]]
它被转换成这个json(注意,一个Object Card被添加在开始处(实际上,gameCards对象中的第二张卡被作为一张单独的卡放置在gameCards对象之前......它不应该在那里......):
{"card":{"kleur":"schoppen","waarde":"vrouw"},"gameCards":[{"kleur":"harten","waarde":"_8"},{"kleur":"harten","waarde":"heer"},{"kleur":"harten","waarde":"_5"},{"kleur":"schoppen","waarde":"_9"},{"kleur":"harten","waarde":"boer"},{"kleur":"harten","waarde":"_3"},{"kleur":"klaver","waarde":"_4"},{"kleur":"ruiten","waarde":"aas"},{"kleur":"ruiten","waarde":"_4"},{"kleur":"schoppen","waarde":"_3"},{"kleur":"ruiten","waarde":"heer"},{"kleur":"ruiten","waarde":"_5"},{"kleur":"harten","waarde":"_4"},{"kleur":"schoppen","waarde":"_9"},{"kleur":"klaver","waarde":"_5"},{"kleur":"ruiten","waarde":"_5"},{"kleur":"klaver","waarde":"_9"},{"kleur":"schoppen","waarde":"_8"},{"kleur":"harten","waarde":"aas"},{"kleur":"ruiten","waarde":"aas"},{"kleur":"harten","waarde":"vrouw"},{"kleur":"ruiten","waarde":"_2"},{"kleur":"ruiten","waarde":"vrouw"},{"kleur":"schoppen","waarde":"_7"},{"kleur":"schoppen","waarde":"_7"},{"kleur":"harten","waarde":"_6"},{"kleur":"schoppen","waarde":"_4"},{"kleur":"schoppen","waarde":"vrouw"},{"kleur":"schoppen","waarde":"boer"},{"kleur":"harten","waarde":"vrouw"},{"kleur":"klaver","waarde":"boer"},{"kleur":"klaver","waarde":"_6"},{"kleur":"ruiten","waarde":"_6"},{"kleur":"harten","waarde":"_9"},{"kleur":"schoppen","waarde":"heer"},{"kleur":"ruiten","waarde":"_7"},{"kleur":"schoppen","waarde":"_2"},{"kleur":"ruiten","waarde":"boer"},{"kleur":"schoppen","waarde":"_5"},{"kleur":"schoppen","waarde":"heer"},{"kleur":"schoppen","waarde":"aas"},{"kleur":"harten","waarde":"_3"},{"kleur":"ruiten","waarde":"_2"},{"kleur":"ruiten","waarde":"_8"},{"kleur":"schoppen","waarde":"_6"},{"kleur":"ruiten","waarde":"_4"},{"kleur":"harten","waarde":"boer"},{"kleur":"harten","waarde":"_8"},{"kleur":"klaver","waarde":"_8"},{"kleur":"klaver","waarde":"_3"},{"kleur":"klaver","waarde":"_7"},{"kleur":"ruiten","waarde":"_7"},{"kleur":"ruiten","waarde":"vrouw"},{"kleur":"schoppen","waarde":"boer"},{"kleur":"harten","waarde":"_5"},{"kleur":"schoppen","waarde":"_6"},{"kleur":"klaver","waarde":"_2"},{"kleur":"harten","waarde":"_4"},{"kleur":"schoppen","waarde":"_2"},{"kleur":"klaver","waarde":"vrouw"},{"kleur":"klaver","waarde":"_2"},{"kleur":"harten","waarde":"_2"},{"kleur":"klaver","waarde":"heer"},{"kleur":"klaver","waarde":"_7"},{"kleur":"harten","waarde":"_9"},{"kleur":"ruiten","waarde":"_6"},{"kleur":"klaver","waarde":"aas"},{"kleur":"klaver","waarde":"_4"},{"kleur":"ruiten","waarde":"heer"},{"kleur":"schoppen","waarde":"_3"},{"kleur":"klaver","waarde":"aas"},{"kleur":"ruiten","waarde":"_3"},{"kleur":"klaver","waarde":"_6"},{"kleur":"klaver","waarde":"_5"},{"kleur":"schoppen","waarde":"_8"},{"kleur":"harten","waarde":"aas"},{"kleur":"harten","waarde":"heer"},{"kleur":"klaver","waarde":"_8"},{"kleur":"ruiten","waarde":"_8"},{"kleur":"schoppen","waarde":"_5"},{"kleur":"ruiten","waarde":"_3"},{"kleur":"klaver","waarde":"_9"},{"kleur":"ruiten","waarde":"boer"},{"kleur":"schoppen","waarde":"_4"}]}
我使用这个转换器。(println输出是我上面显示的。)
import java.io.IOException;
import java.util.List;
import nl.hu.bep2.casino.blackjack.domain.GameCards;
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
@Converter
public class CardListConverter implements AttributeConverter<GameCards, String> {
GameCards gameCards = new GameCards();
@Override
public String convertToDatabaseColumn(GameCards gameCards) {
System.out.println("%%%%$$$$$%%%%%###############$$$$$$$$$$$$$$$");
System.out.println("CardListConverter to db is aangeroepen!!! voor gameCards " + gameCards);
final ObjectMapper mapper = new ObjectMapper();
String gameCardsJson = null;
try {
gameCardsJson = mapper.writeValueAsString(gameCards);
System.out.println("dit maakt de mapper er van:" + gameCardsJson);
} catch (final JsonProcessingException e) {
System.out.println("CardListConverter To DB Kolom geeft error"+ e);
}
return gameCardsJson;
}
@Override
public GameCards convertToEntityAttribute(String gameCardsJson) {
// System.out.println("CardListConverter to Entity is aangeroepen!!! voor gameCardsJson " + gameCardsJson);
if (gameCardsJson == null) {
System.out.println("gameCardsJson is empty!!!");
}
final ObjectMapper mapper = new ObjectMapper();
try {
return mapper.readValue(gameCardsJson, GameCards.class );
} catch (final IOException e) {
System.out.println("CardListConverter To Entity (from json) geeft error"+ e);
}
return null;
}
}
有人知道这里出了什么问题吗?
游戏卡对象:
public class GameCards implements Serializable {
private List<Card> gameDeck = new ArrayList<>();
public GameCards() {
}
public GameCards(int numberOfDecks) {
this.gameDeck = GameCards.initiateDeck(numberOfDecks);
}
public static List<Card> initiateDeck(int numberOfDecks) {
int loop =numberOfDecks;
Kleur kleuren[] = Kleur.values();
Waarde waarden[] = Waarde.values();
List<Card> cards = new ArrayList<>();
while (loop > 0) {
for(Kleur kleur: kleuren) {
if (kleur == Kleur.achterkant) {
continue;
}
for( Waarde waarde: waarden) {
if (waarde == Waarde.achterkant) {
continue;
}
Card card = new Card(kleur, waarde);
cards.add(card);
}
}
loop--; // loop met één verlagen als er één compleet deck is toegevoegd
}
Collections.shuffle(cards);
return cards;
}
public List<Card> getGameCards(){
return this.gameDeck;
}
public Card getCard() {
Card card = null; ;
card = this.gameDeck.get(1); // kies de bovenste kaart van het geschudde deck
this.gameDeck.remove(1); //en verwijder deze uit de deck
return card; //geef deze kaart aan bv een speler of dealer
}
@Override
public String toString() {
return "GameCards [gameDeck=" + gameDeck + "]";
}
该卡:
public class Card implements Serializable {
private Kleur kleur;
private Waarde waarde;
public Card() {
}
public Card(Kleur kleur, Waarde waarde) {
this.kleur = kleur;
this.waarde = waarde;
// TODO Auto-generated constructor stub
}
public Kleur getKleur() {
return kleur;
}
public void setKleur(Kleur kleur) {
this.kleur = kleur;
}
public Waarde getWaarde() {
return waarde;
}
public void setWaarde(Waarde waarde) {
this.waarde = waarde;
}
@Override
public String toString() {
return "Card [kleur=" + kleur + ", waarde=" + waarde + "]";
}
}
1条答案
按热度按时间2hh7jdfx1#
ObjectMapper扫描你的set和get方法。所以你不应该使用像getCards和getGameCards这样的方法。因为这些方法你的json生成不正确。你必须像这样修改你的GameCards类。
}