当前位置: 首页 > 知识库问答 >
问题:

org.springframework.dao.invalidDataAccessAPIUSAGEException:给定的字符串值:[]不能转换为Json对象

韦棋
2023-03-14

我犯了这样的错误。

嵌套异常是java.lang.IllegalArgumentException:给定的字符串值:[{“id”:“dfw”,“namd”:“Dallas,TX(Dfw-Dallas-Fort Worth Intl.)”,“name_kr”:“,(dfw--)”},{“id”:“dal”,“namd”:“Dallas,TX(dallas-love Field)”,“name_kr”:“dallas,TX(rbd-执行)”,{“id”:“rbd”,“namd”:“dallas,TX(rbd-执行)”name_kr“:”,(rbd-多)“},{”id“:”ads“,”namd“:”dallas,TX(ads-addison)“,”name_kr“:”,(ads-)“}]无法转换为Json对象

这个值是postgres行的jsonb列。

下面是我的表实体示例(相关问题)。


@Data
@Entity
@Table(name = "expedia_region_union")
@JsonInclude(JsonInclude.Include.NON_NULL)
@TypeDefs({
        @TypeDef(name = "jsonb", typeClass = JsonBinaryType.class)
})
public class ExpediaRegionUnion {


    @Id
//    @GeneratedValue
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column( columnDefinition = "uuid", updatable = false )
    private String regionId;


    @Type(type = "jsonb")
    @Column(columnDefinition = "airport")
    private HashMap airport;



    @Column(name = "source_time")
    private String sourceTime;

在我看来,实体地图似乎没有处理机场字段。Airport字段列表为jsonb类型。但是我创建了像hashmap这样的实体规则。

样本数据

about airport field

[
  {
    "id": "DFW",
    "namd": "Dallas, TX (DFW-Dallas-Fort Worth Intl.)",
    "name_kr": "댈러스, 텍사스 (DFW-댈러스-포트워스 국제공항)"
  },
  {
    "id": "DAL",
    "namd": "Dallas, TX (DAL-Love Field)",
    "name_kr": "댈라스, 텍사스 (DAL-러브필드 공항)"
  },
  {
    "id": "RBD",
    "namd": "Dallas, TX (RBD-Executive)",
    "name_kr": "댈러스, 텍사스 (RBD-이그제큐티브)"
  },
  {
    "id": "ADS",
    "namd": "Dallas, TX (ADS-Addison)",
    "name_kr": "댈러스, 텍사스 (ADS-애디슨 공항)"
  }
]

共有1个答案

白飞飙
2023-03-14

您的示例数据与您的期望不符。

"airport" : "[{\"id\": \"DFW\", \"namd\": \"Dallas, TX (DFW-Dallas-Fort Worth Intl.)\", \"name_kr\": \"댈러스, 텍사스 (DFW-댈러스-포트워스 국제공항)\"}, ...]"

不是数组而是字符串,由值周围的引号显示。一个有效的JSON数组如下所示

"airport" : [{"id": "DFW", "namd": "Dallas, TX (DFW-Dallas-Fort Worth Intl.)", "name_kr": "댈러스, 텍사스 (DFW-댈러스-포트워스 국제공항)"}, {"id": "DAL", "namd": "Dallas, TX (DAL-Love Field)", "name_kr": "댈라스, 텍사스 (DAL-러브필드 공항)"}, {"id": "RBD", "namd": "Dallas, TX (RBD-Executive)", "name_kr": "댈러스, 텍사스 (RBD-이그제큐티브)"}, {"id": "ADS", "namd": "Dallas, TX (ADS-Addison)", "name_kr": "댈러스, 텍사스 (ADS-애디슨 공항)"}]
 类似资料:
  • 我想序列化java.time类型的创建日期。调用spring data rest服务时,LocalDateTime为String。实体的字段用DateTimeFormat(iso=iso.DATE_TIME)进行注释。我还在Spring Configuration类中注册了LocalData到String转换器。 但是没有调用转换器,创建日期被序列化为Json结构,如下所示: 这是实体定义: 简单

  • 问题内容: 我正在使用JS对象通过Google可视化创建图形。我正在尝试设计数据源。首先,我创建了一个JS对象客户端。 现在,我需要动态获取数据。因此,我将AJAX请求发送到返回JSON字符串的页面: 我将其保存到变量中: 并显示为 现在,我的任务是从该字符串创建一个JS对象。这是行不通的。当我使用JS对象时,一切工作正常,并且能够获得所需的图形。现在,如果我尝试从警报消息中确认的来自AJAX请求

  • 问题内容: 将字符串表示形式转换为对象,但我要相反。对象要转换为JSON字符串,我有一个链接http://www.devcurry.com/2010/03/convert- javascript-object-to-json.html, 但是它需要json2.js jQuery是否具有本机功能方法来做到这一点? 问题答案: jQuery只会在调用本机浏览器方法之前进行一些正则表达式检查。如果不可用

  • 问题内容: 如何使用JavaScript(或jQuery)将描述对象的字符串转换为JSON字符串? 例如:转换这个( 不是 有效的JSON字符串): 到这个: 如果可能,我希望避免使用。 问题答案: 如果字符串是来自可靠来源 ,你可以使用然后的结果。像这样: 请注意,当您使用对象文字时,必须将其括在圆括号中,否则将花括号解析为块而不是对象。 我也同意以下问题的评论,那就是最好以有效的JSON开始编

  • 问题内容: 您如何使JS认为字符串是JSON? 我有一个仅在将JSON对象传递给它的情况下才起作用的函数。如果我以与JSON相同的格式将字符串传递给它,则它将不起作用。因此,我想让该函数认为传递给它的字符串是JSON。该字符串确实采用JSON格式。 我还尝试了以下方法。我通过Ajax输入了字符串,参数“ handle as”为“ JSON”,然后将结果传递给函数。 所以我推断出问题不在弦上。如何将

  • 我如何解决这个问题?我正在从Excel文件中读取数据,输出为字符串。 DataProvider的方法“getData”需要Object[][]返回类型。 错误:(17,16)Java:不兼容类型:java.lang.String无法转换为java.lang.Object[]