【问题标题】:Determine type of generic object in Java确定Java中泛型对象的类型
【发布时间】:2013-10-29 03:42:05
【问题描述】:

我正在处理一些 JSON 数据,但我不知道我会收到什么。例如,对于键“TestKey”,我可能会得到一个值“MyValue”,就像我得到一个值 12345 或 10/10/2005。

在 Java 中是否有一种简单的方法来确定一般归类为“对象”的事物的类型?

我只是希望能够将它分成 int、double、date、string 等组。而且我确信有一种比使用正则表达式查看它更经典的方法。

谢谢

【问题讨论】:

  • 你在使用 JSON 库吗?
  • 没有。老实说,这不是一个真正的 JSON 问题......我只是想知道如何给定一个对象,我可以询问它以确定它是哪种类型。
  • 在被解析之前,它们都是 String 类型,通常由经过审查的 JSON 库解析。
  • 我认为这是不可能的。如果您知道可能的目标对象类型,您可以使用instanceof;但是,您尝试做的事情可能无法实现。
  • Java 中的所有对象都隐式扩展了Object 类。在处理 JSON 时,您收到的数据将是字符串的形式。作为程序员,您可以决定哪些数据类型与哪些键相关联。如果确实需要歧义(即值可能是字符串、整数或其他格式),我建议使用正则表达式或类似以下内容:Integer.class.isInstance(yourValue)

标签: java json types instanceof


【解决方案1】:

你不能,你最好的选择是传递一个带有某种数据的额外字段来识别字段类型。但这会很脏。最好的选择是始终确定您将在 JSON 中获得什么样的字段,如果您实现了这一点,那么您将获得与 Gson 等 JSON 库的兼容性。如果你不这样做,你自己一个人,你将不得不传递某种类型的字段,如type:0(其中 0 表示 int,1 表示 double 等等......)并制作脏 switch 到正确投射字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-26
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多