drno-reg
@drno-reg
см не кратко

Почему при создании json образуются двойные [[?

Здравствуйте.

Возможно банальный вопрос, НО все же задам его.

Есть таблица
Employee    Input_Weight1 Input_Weight2 Input_Weight3
      сотрудник1 0.2          0.4          0.3
      сотрудник2 0            0            0
      сотрудник3 0            0            0


на основании данных таблицы

List<String> Employee = new ArrayList<>();
        List<String> Input_Weight1 = new ArrayList<>();
        List<String> Input_Weight2 = new ArrayList<>();
        List<String> Input_Weight3 = new ArrayList<>();

        Employee.add("сотрудник1");
        Employee.add("сотрудник2");
        Employee.add("сотрудник3");
        Input_Weight1.add("0.2");
        Input_Weight1.add("0");
        Input_Weight1.add("0");
        Input_Weight2.add("0.4");
        Input_Weight2.add("0");
        Input_Weight2.add("0");
        Input_Weight3.add("0.3");
        Input_Weight3.add("0");
        Input_Weight3.add("0");

        Employee3 employee3=null;
        JSONArray jsonobj = new JSONArray();
        List<Employee3> map_list=new ArrayList<>();
        for (int i=0; i<Employee.size(); i++){
            employee3=new Employee3();
            employee3.setEmployee(Employee.get(i));
            employee3.setInput_Weight1(Input_Weight1.get(i));
            employee3.setInput_Weight2(Input_Weight2.get(i));
            employee3.setInput_Weight3(Input_Weight3.get(i));
            map_list.add(employee3);
           // System.out.println(Employee.get(i));
        }
        jsonobj.put(map_list);
        Gson gson1 = new Gson();
        System.out.println(gson1.toJson(jsonobj));


класс Employee3

public class Employee3 {

private String Employee;
private String Input_Weight1;
private String Input_Weight2;
private String Input_Weight3;

    public String getEmployee() {
        return Employee;
    }

    public void setEmployee(String employee) {
        Employee = employee;
    }

    public String getInput_Weight1() {
        return Input_Weight1;
    }

    public void setInput_Weight1(String input_Weight1) {
        Input_Weight1 = input_Weight1;
    }

    public String getInput_Weight2() {
        return Input_Weight2;
    }

    public void setInput_Weight2(String input_Weight2) {
        Input_Weight2 = input_Weight2;
    }

    public String getInput_Weight3() {
        return Input_Weight3;
    }

    public void setInput_Weight3(String input_Weight3) {
        Input_Weight3 = input_Weight3;
    }
}


в результате получается следующий результат

[[{"Employee":"сотрудник1","Input_Weight1":"0.2","Input_Weight2":"0.4","Input_Weight3":"0.3"},{"Employee":"сотрудник2","Input_Weight1":"0","Input_Weight2":"0","Input_Weight3":"0"},{"Employee":"сотрудник3","Input_Weight1":"0","Input_Weight2":"0","Input_Weight3":"0"}]]


В чем ошибка? как избавиться от двойных ]] и как сделать их одинарными?
  • Вопрос задан
  • 253 просмотра
Решения вопроса 2
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Потому что не надо мешать Gson и стандартный json-движок. Ты сам создал массив, запихал в него лист(который в джсоне представляется тоже массивом) и потом эту бяку сериализовал с помощью Gson'a.
Ответ написан
Комментировать
drno-reg
@drno-reg Автор вопроса
см не кратко
итого:

List<String> Employee = new ArrayList<>();
        List<String> Input_Weight1 = new ArrayList<>();
        List<String> Input_Weight2 = new ArrayList<>();
        List<String> Input_Weight3 = new ArrayList<>();

        Employee.add("сотрудник1");
        Employee.add("сотрудник2");
        Employee.add("сотрудник3");
        Input_Weight1.add("0.2");
        Input_Weight1.add("0");
        Input_Weight1.add("0");
        Input_Weight2.add("0.4");
        Input_Weight2.add("0");
        Input_Weight2.add("0");
        Input_Weight3.add("0.3");
        Input_Weight3.add("0");
        Input_Weight3.add("0");

        Employee3 employee3=null;
        JSONArray jsonobj = new JSONArray();
     //   List<Employee3> map_list=new ArrayList<>();
        for (int i=0; i<Employee.size(); i++){
            employee3=new Employee3();
            employee3.setEmployee(Employee.get(i));
            employee3.setInput_Weight1(Input_Weight1.get(i));
            employee3.setInput_Weight2(Input_Weight2.get(i));
            employee3.setInput_Weight3(Input_Weight3.get(i));
          //  map_list.add(employee3);
           // System.out.println(Employee.get(i));
            jsonobj.put(employee3);
        }

        Gson gson1 = new Gson();
        System.out.println(gson1.toJson(jsonobj));


результат:

[{"Employee":"сотрудник1","Input_Weight1":"0.2","Input_Weight2":"0.4","Input_Weight3":"0.3"},{"Employee":"сотрудник2","Input_Weight1":"0","Input_Weight2":"0","Input_Weight3":"0"},{"Employee":"сотрудник3","Input_Weight1":"0","Input_Weight2":"0","Input_Weight3":"0"}]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы