diff --git a/src/test/java/org/redkale/test/convert/BiFunctionConvertTest.java b/src/test/java/org/redkale/test/convert/BiFunctionConvertTest.java new file mode 100644 index 000000000..8825bf0ae --- /dev/null +++ b/src/test/java/org/redkale/test/convert/BiFunctionConvertTest.java @@ -0,0 +1,79 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.redkale.test.convert; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.redkale.convert.ConvertField; +import org.redkale.convert.json.JsonConvert; +import org.redkale.util.Attribute; + +/* + * test + * + * @author zhangjx + */ +public class BiFunctionConvertTest { + + public static class GamePlayer { + + public int userid; + + public String username; + + public int[] cards; + } + + public static class GameTable { + + public int tableid; + + public GamePlayer[] players; + } + + @Test + public void run() throws Throwable { + GamePlayer player1 = new GamePlayer(); + player1.userid = 1; + player1.username = "玩家1"; + player1.cards = new int[] {11, 12, 13, 14, 15}; + GamePlayer player2 = new GamePlayer(); + player2.userid = 2; + player2.username = "玩家2"; + player2.cards = new int[] {21, 22, 23, 24, 25}; + GamePlayer player3 = new GamePlayer(); + player3.userid = 3; + player3.username = "玩家3"; + player3.cards = new int[] {31, 32, 33, 34, 35}; + GameTable table = new GameTable(); + table.tableid = 100; + table.players = new GamePlayer[] {player1, player2, player3}; + JsonConvert convert1 = JsonConvert.root(); + System.out.println(convert1.convertTo(table)); + JsonConvert convert2 = convert1.newConvert( + (Attribute t, Object u) -> { + if (t.field().equals("cards") && u instanceof GamePlayer) { + int userid = ((GamePlayer) u).userid; + if (userid == 3) return null; // 玩家3的cards不输出 + return t.get(u); + } + return t.get(u); + }, + (Object u) -> { + if (table != u) return null; + // return new ConvertField[]{new ConvertField("extcol1", 30), + // new ConvertField("extcol2", "扩展字段值")}; + return ConvertField.ofArray("extcol1", 30, "extcol2", "扩展字段值"); + }); + System.out.println(convert2.convertTo(table)); + Assertions.assertEquals( + "{\"players\":[{\"cards\":[11,12,13,14,15],\"userid\":1,\"username\":\"玩家1\"}," + + "{\"cards\":[21,22,23,24,25],\"userid\":2,\"username\":\"玩家2\"}," + + "{\"userid\":3,\"username\":\"玩家3\"}]," + + "\"tableid\":100,\"extcol1\":30,\"extcol2\":\"扩展字段值\"}", + convert2.convertTo(table)); + } +}