Java 将JSON字符串[]映射到表问题
我正在为一个站点提取API,我的Jason返回如下内容:Java 将JSON字符串[]映射到表问题,java,json,string,Java,Json,String,我正在为一个站点提取API,我的Jason返回如下内容: { "stats":{ "corners":[ "11", "1" ], "yellowcards":[ "1", "3" ], "redcards":[ "0", "0" ], "penalties":[
{
"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"
]
}
}
@ElementCollection
@CollectionTable(name="my_collection_table", joinColumns=@JoinColumn(name="stats_id"))
public Collection<String> getGoals(){
return goals;
}
我尝试将其转换为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…”
:
:
:
提前感谢您的帮助。使用存储字符串集合。比如:
{
"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"
]
}
}
@ElementCollection
@CollectionTable(name="my_collection_table", joinColumns=@JoinColumn(name="stats_id"))
public Collection<String> getGoals(){
return goals;
}
@ElementCollection
@CollectionTable(name=“my\u collection\u table”,joinColumns=@JoinColumn(name=“stats\u id”))
公共集合getGoals(){
回归目标;
}
您需要为每个集合创建一个表,其中包含列值和引用所属实体的外键。我只对所有列使用varchar数据类型。不要在列中存储
String[]
。了解@OneToMany
,@ManyToMany
是的,JPA正在尝试将您的类Stats
字段插入数据库。它不知道如何将字符串数组转换为字符串类型以将数据库配置为。