Как добавить значение Dynami c в качестве имени поля объекта в java? - PullRequest
0 голосов
/ 28 января 2020

** Запрос **

@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", я хочу получить динамику c данные, которые я передал: "ram" = "123 '

пример:

{studentname:john, john:"123"},
{studentname:Ram, Ram:"124"}

1 Ответ

0 голосов
/ 29 января 2020

Вы можете использовать любую библиотеку JSON для чтения данных json.

1) Считайте ключ значения studentname, чтобы получить имя студента. 2) Считайте значение ключа 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
...