java - 如何在java中添加动态值作为对象字段名称?
问题描述
** 询问**
@PostMapping("/students/create")
public Student postCandidate(@RequestBody Student student) {
Student _student = repository.save(new Student (student.getStudentname(), student.setRollno()));
return _student;
}
代码:
public class Student {
private String studentname;
private int rollno;
public Student(int rollno, String studentname) {
this.rollno = rollno;
this.studentname = studentname;
}
public String getStudentname() {
return studentname;
}
public void setStudentname(String studentname) {
this.studentname = studentname;
}
public int getRollno() {
return rollno;
}
public void setRollno(int rollno) {
this.rollno = rollno;
}
}
而不是得到 rollno ="123" 我想获得我通过的动态数据:“ram”="123'
例子:
{studentname:john, john:"123"},
{studentname:Ram, Ram:"124"}
解决方案
您可以使用任何 JSON 库来读取 json 数据。
1) 读取 value 键studentname
以获取学生姓名。2)读取key的值student's name from #1
此外,有问题提供的 json 无效。我假设正确的 json 是
[
{
studentname: "john",
john: "123"
},
{
studentname: "Ram",
Ram: "124"
}
]
我尝试使用 GSON 库:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
public class GsonTest {
private static String json = "JSON STRING HERE";
public static void main(String[] args) {
Gson gson = new GsonBuilder().create();
JsonElement jsonElement = gson.fromJson(json, JsonElement.class);
JsonArray array = jsonElement.getAsJsonArray();
Iterator<JsonElement> iterator = array.iterator();
List<Student> students = new ArrayList<Student>();
while (iterator.hasNext()) {
JsonObject item = iterator.next().getAsJsonObject();
// Roll No is read by reading dynamic key which is student name
Student student = new Student(item.get(item.get("studentname").getAsString()).getAsInt(), item.get("studentname").getAsString());
students.add(student);
}
students.forEach(item -> {
System.out.println("Name : " + item.getStudentname() + " Roll No : " + item.getRollno());
});
}
}
输出:
Name : john Roll No : 123
Name : Ram Roll No : 124
推荐阅读
- angular - How to access the target of an $event bound to a DOM element using a custom directive?
- python - Travis 未将标记提交部署到 pypi
- html - Wordpress images load crisply on IE but are blurry on chrome?
- python - Importing self-made package
- mysql - 根据表 project_users 中的 user_ID 显示字段
- python - 仅输入语句返回 Str 类型 - Jupyter Notebook
- python - 使用增量字段加载 DATA LOCAL INFILE
- php - PHP用api上传文件
- python - 从文件中获取输入,文件行成对分组
- bash - mv 文件夹目标上的通配符