java - 将 JSON String[] 映射到表问题

标签 java json string

我正在为网站提取 API,我的 Jason 返回如下内容:

{  
   "stats":{  
      "corners":[  
         "11",
         "1"
      ],
      "yellowcards":[  
         "1",
         "3"
      ],
      "redcards":[  
         "0",
         "0"
      ],
      "penalties":[  
         "0",
         "0"
      ],
      "substitutions":[  
         "0",
         "0"
      ],
      "attacks":[  
         "51",
         "51"
      ],
      "dangerous_attacks":[  
         "32",
         "31"
      ],
      "on_target":[  
         "5",
         "7"
      ],
      "off_target":[  
         "13",
         "5"
      ],
      "possession_rt":[  
         "55",
         "45"
      ]
   }
}

我尝试将其转换为 Java 类,如下所示:

包 com.events.bettingevents.results;

import org.hibernate.annotations.GenericGenerator;

import javax.persistence.*;
import java.io.Serializable;
import java.util.Arrays;
import java.util.List;

@Entity
@Table(name="resbet_stats")
public class Stats implements Serializable
{
    private String[] off_target;
    private String[] possession_rt;
    private String[] redcards;
    private String[] dangerous_attacks;
    private String[] corners;
    private String[] substitutions;
    private String[] on_target;
    private String[] yellowcards;
    private String[] attacks;
    private String[] penalties;
    private String[] goals;
    private Long statsId;
    private Results results;


    @OneToOne(mappedBy = "stats")
    public Results getResults() {
        return results;
    }

    public void setResults(Results results) {
        this.results = results;
    }

    @Id
    @GeneratedValue(strategy= GenerationType.AUTO,generator="native")
    @GenericGenerator(name = "native",strategy = "native" )
    @Column(name="stats_id")
    public Long getStatsId() {
        return statsId;
    }

    public void setStatsId(Long statsId) {
        this.statsId = statsId;
    }

    @Column(name="goals")
    public String[] getGoals() {
        return goals;

    }

    public void setGoals(String[] goals) {
        this.goals = goals;

    }

    @Column(name="off_target")
    public String[] getOff_target ()
    {
       return off_target;

    }

    public void setOff_target (String[] off_target)
    {
        this.off_target = off_target;

    }

    @Column(name="possession_rt")
    public String[] getPossession_rt ()
    {
        return possession_rt;

    }

    public void setPossession_rt (String[] possession_rt)
    {
        this.possession_rt = possession_rt;

    }

    @Column(name="redcards")
    public String[] getRedcards ()
    {
        return redcards;

    }

    public void setRedcards (String[] redcards)
    {
        this.redcards = redcards;

    }

    @Column(name="dangerous_attacks")
    public String[] getDangerous_attacks ()
    {
        return dangerous_attacks;

    }

    public void setDangerous_attacks (String[] dangerous_attacks)
    {
        this.dangerous_attacks = dangerous_attacks;

    }

    @Column(name="corners")
    public String[] getCorners ()
    {
        return corners;

    }

    public void setCorners (String[] corners)
    {
        this.corners = corners;

    }

    @Column(name="substitutions")
    public String[] getSubstitutions ()
    {
        return substitutions;

    }

    public void setSubstitutions (String[] substitutions)
    {
        this.substitutions = substitutions;

    }

    @Column(name="on_target")
    public String[] getOn_target ()
    {
        return on_target;

    }

    public void setOn_target (String[] on_target)
    {
        this.on_target = on_target;

    }

    @Column(name="yellowcards")
    public String[] getYellowcards ()
    {
        return yellowcards;

    }

    public void setYellowcards (String[] yellowcards)
    {
        this.yellowcards = yellowcards;

    }


    @Column(name="attacks")
    public String[] getAttacks (){
        return attacks;
    }

    public void setAttacks (String[] attacks){
        this.attacks = attacks;

    }

    @Column(name="penalties")
    public String[] getPenalties ()
    {
        return penalties;

    }


    public void setPenalties (String[] penalties)
    {
        this.penalties = penalties;

    }


}



Can someone suggest what datatype for table columns should I use? Is it blob? I created all my columns as `varchar`(10).

我收到如下错误(例如):

第 1 行“攻击”列的字符串值不正确:“\xAC\xED\x00\x05ur...” : : : 感谢您提前提供的帮助。

最佳答案

使用 ElementCollection存储字符串集合。像这样的东西:

@ElementCollection
@CollectionTable(name="my_collection_table", joinColumns=@JoinColumn(name="stats_id"))
public Collection<String> getGoals(){
    return goals;
}

您需要为每个集合创建一个表,其中包含引用所属实体的列值和外键。

关于java - 将 JSON String[] 映射到表问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52251676/

相关文章:

java - 如何修改此程序以包含可用于更改此小程序的背景颜色的八种颜色的 JList?

java - Maven 程序集插件使用类路径构建 jar

java - java中的破折号分隔符正在改变输出

javascript - 获取 URL 并使用 JSON 模式引用对其进行操作

C++:使用sizeof的char数组的大小

java - 如何填充 GridView 中的空单元格并使其不可点击

json - 无法使用 JSONDecoder 解码

json - Mule (Dataweave) 将 JSON 数组转换为字符串

java - 创建并有机会从字符串池中创建 String 对象有什么意义

c++ - 从函数返回局部字符数组