Я не мог десериализовать Json с помощью Gson в Apache Tomcat - PullRequest
0 голосов
/ 28 января 2019

Я занимаюсь разработкой приложения, которое требует десериализации данных json, полученных из оставшегося API python после API.Я могу передать значение, но оно не примет это как есть.Но когда я даю те же данные вручную и пытаюсь их запустить, они присваивают данные!

Это мой входной класс Json:

  public class inputJSON {
private String Organization;
private String Name;
private String Role;
public String getName() {
    return Name;
}
public String getRole() {
    return Role;
}
public String getOrganization() {
    return Organization;
}
}

Это мой десериализационный класс:

import com.google.gson.Gson; 
import com.google.gson.GsonBuilder;
public class Deserializer {
public static void deserializer(String json) {
GsonBuilder builder = new GsonBuilder(); 
builder.setPrettyPrinting(); 
Gson gson = builder.create(); 
inputJSON inputObject = gson.fromJson(json, inputJSON.class);
System.out.println(inputObject);
}

}

Если я передам "{'Имя': 'Ананд Махиндра', 'Организация': 'Тех Махиндра', 'Роль': 'Основатель'}" (Это строка) в качестве аргумента от Python.Сбрасывает ошибку.

Это значение, которое я получил от python: json = "{'Name': 'Anand Mahindra', 'Organization': 'Tech Mahindra', 'Role': 'Founder'}"

Это ошибка, которую я получаю при передаче в качестве аргумента: Исключение: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: ожидается BEGIN_OBJECT, но в строке 1 столбца 2

НО!

public class GsonTester {
public static void main(String[] args) { 
      String jsonString = "{'Name':'Anand Mahindra','Organization':'Tech Mahindra','Role':'Founder'}"; 

      GsonBuilder builder = new GsonBuilder(); 
      builder.setPrettyPrinting(); 

      Gson gson = builder.create(); 
      Student student = gson.fromJson(jsonString, Student.class); 
      System.out.println(student);    

      jsonString = gson.toJson(student); 
      System.out.println(jsonString);  
   } 


public class Student {
private String Organization;
private String Name;
private String Role;


public String getName() {
    return Name;
}
public String getRole() {
    return Role;
}
public String getOrganization() {
    return Organization;
}
}

если я даю вручную в jsonString, значения отлично присваиваются!

Что я делаю не так?Не могли бы вы объяснить или дать ссылку на учебный материал по проблеме?

1 Ответ

0 голосов
/ 30 января 2019

Приведенный выше код работает отлично.Данные, отправленные с python, не были в правильном формате Json.Собственный Json был заключен в двойные кавычки, которые функции Gson выдали исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...