Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java在不使用setter的情况下将一个JSON字段解析为两个Java字段_Java_Json_Spring Boot - Fatal编程技术网

Java在不使用setter的情况下将一个JSON字段解析为两个Java字段

Java在不使用setter的情况下将一个JSON字段解析为两个Java字段,java,json,spring-boot,Java,Json,Spring Boot,我正在使用sprintboot,我有一个类似于: 公共类源代码{ #我这里有10个注释验证器 #@NotNull@反序列化程序和其他 公共字符串原始数据; #我这里有10个注释验证器 #@NotNull@反序列化程序和其他 公共字符串fix_数据; #我有100多个其他领域 } 我希望将此数据解析为固定版本,但仍保留原始版本 {“数据”:“somedata”} 数据不能以数字开头 “abc”将是有效的 “1abc”将无效 因此,我希望我的java类被解析为: 公共类源代码{ 公共字符串r

我正在使用sprintboot,我有一个类似于:

公共类源代码{
#我这里有10个注释验证器
#@NotNull@反序列化程序和其他
公共字符串原始数据;
#我这里有10个注释验证器
#@NotNull@反序列化程序和其他
公共字符串fix_数据;
#我有100多个其他领域
}
我希望将此数据解析为固定版本,但仍保留原始版本

{“数据”:“somedata”}
数据不能以数字开头

  • “abc”
    将是有效的
  • “1abc”
    将无效
因此,我希望我的java类被解析为:

公共类源代码{
公共字符串raw_data=“1abc”;
公共字符串fix_data=“abc”;
}
我试图使用
@jsonaas
,但没有成功。我还试图使用
@JsonProperty
,但我得到了
错误:多个字段表示属性


如何将json值解码为两个字段?

映射数据->原始数据,在您的方法中:

setRawData(String rawData){
  this.rawData = rawData;
  this.fixedData = rawData.replace("1", ""); // Whatever you do to fix it
}

您可以使用应用于构造函数的@JsonCreator来反序列化提到的JSON结构

公共类源代码{
公共字符串数据;
公共字符串数据;
@JsonCreator
公共源(@JsonProperty(“数据”)字符串数据){
this.rawData=数据;
this.fixData=data.replaceAll(“^(\\d+”,”“);//删除开头的数字
}
}
测试

String json=“{\'data\':\'1abc\'}”;
ObjectMapper mapper=新的ObjectMapper();
sourcesrc=mapper.readValue(json,Source.class);
System.out.printf(“原始:'%s',输入:'%s'%n',src.rawData,src.fixData”);
输出:

raw: '1abc', input: 'abc'

没有setter我怎么办?你为什么不使用setter?我使用其他@objects东西,当我使用setter时,我的模型不起作用,我也使用不同的类型,如字段的number和class你的示例有2个字符串,没有注释,也没有明确的示例如果我有多个值怎么办?哪多个值?所以你只需将其他值添加到构造函数中并在那里设置它们。我有一个具有100多个属性的模型。你发布了一个带有狭义上下文的问题。在初始上下文中,您得到了该问题的“复制粘贴就绪”答案。而不是说“谢谢”,你开始记住你的实际环境的细节,甚至可能意识到你的实际问题是完全不同的。比如,在一个模型中有100多个属性是一个很大的问题。你的问题需要澄清:我确实用change更新了它,你这是什么意思<代码>#我这里有10个注释验证器我没有空的反序列化器和我的同事做的许多其他定制