jackson序列化

发布于 2021-11-28 23:11:39 字数 582 浏览 832 评论 5

@Entity
@Table(name = "t_category")
public class Category extends IdEntity {

	protected String name;
	protected Category parent;
	......

	@NotNull
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "parent_id", insertable = false, updatable = false)
	public Category getParent() {
		return parent;
	}

	.....
}


因为parent是外键,我现在想用jackson序列化输出“parent_id”的值而不是parent对象,应该怎么写?


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

冷默言语 2021-11-29 08:54:33

很好

皇甫轩 2021-11-29 06:44:53

现成的应该是没有的,你可以实现JsonSerializer,下面是一个示例

    @JsonSerialize(using = CountSerializer.class)

package com.fishbone.plat.core.json;

import java.io.IOException;
import java.io.PrintStream;
import org.apache.commons.lang.math.RandomUtils;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.SerializerProvider;

public class CountSerializer
  extends JsonSerializer<Long>
{
  private static long k = Math.pow(10.0D, 3.0D);
  private static long m = Math.pow(10.0D, 6.0D);
  private static long g = Math.pow(10.0D, 9.0D);
  private static long t = Math.pow(10.0D, 12.0D);
  private static long p = Math.pow(10.0D, 15.0D);
  private static long e = Math.pow(10.0D, 18.0D);
  private static long b = Math.pow(10.0D, 21.0D);
  
  public CountSerializer() {}
  
  public void serialize(Long value, JsonGenerator generator, SerializerProvider provider)
    throws IOException
  {
    if (value != null)
    {
      long i = value == null ? 0L : value.longValue();
      String result = parser(i);
      generator.writeString(result);
    }
  }
  
  public static String parser(long i)
  {
    String result = String.valueOf(i);
    boolean isPlus = i >= 0L;
    i = Math.abs(i);
    float j = 0.0F;
    if ((i >= k) && (i < m))
    {
      j = (float)i / (float)k;
      j = Math.round(j * 100.0F) / 100.0F;
      result = j + "K";
    }
    else if ((i >= m) && (i < g))
    {
      j = (float)i / (float)m;
      j = Math.round(j * 100.0F) / 100.0F;
      result = j + "M";
    }
    else if ((i >= g) && (i < t))
    {
      j = (float)i / (float)g;
      j = Math.round(j * 100.0F) / 100.0F;
      result = j + "G";
    }
    else if ((i >= t) && (i < p))
    {
      j = (float)i / (float)t;
      j = Math.round(j * 100.0F) / 100.0F;
      result = j + "T";
    }
    else if ((i >= p) && (i < e))
    {
      j = (float)i / (float)p;
      j = Math.round(j * 100.0F) / 100.0F;
      result = j + "P";
    }
    else if ((i >= e) && (i < b))
    {
      j = (float)i / (float)e;
      j = Math.round(j * 100.0F) / 100.0F;
      result = j + "E";
    }
    else
    {
      return result;
    }
    if (!isPlus) {
      result = "-" + result;
    }
    return result;
  }
  
  public static void main(String[] args)
  {
    for (int i = 0; i < 100; i++)
    {
      long l = RandomUtils.nextLong() / p;
      System.out.println(l + "t" + parser(l));
    }
  }
}

柳若烟 2021-11-29 05:27:18

额,不是这个哦,parent是外键,我只想输出外键的值,而不是parent对象。

命硬 2021-11-29 02:35:02

    @JsonProperty(value = "content_type")

臻嫒无言 2021-11-29 00:43:56

还有更简单的就是再写一个getParentId的方法,把你现在这的属性用JsonIgnore屏蔽掉。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文