Я новичок в разработке Java, но уже имею опыт работы с такими языками программирования, как PHP и Python. Так немного запутался в том, как продолжить весеннюю загрузку с разработкой.
Я разрабатываю API для отдыха, который имеет следующий запрос
{
"key":"value",
"key1":"value1",
"platform_settings":[
{"key":"value"}
]
}
Что я сделал
Я создал RestController, который принимает http-запрос и создал функцию для ресурса.
public Share share(@RequestBody final Share share) {
LOGGER.debug("This is the request", share);
return share; //
}
Вопрос 1: Если бы это был любой другой язык программирования, такой как PHP или Python, была бы вспомогательная функция, которая примет запрос json и преобразует его в объект, с которым я могу легко работать.
В питоне это так же просто, как
import json
import requests
response = requests.get(...)
json_data = json.loads(response.text)
//can work on json_data anyway I want.
Но в java мне нужно будет создать класс POJO или иметь объект jackson/JPA в качестве зависимости, который будет отображать запрос в класс (который я должен предварительно определить с запросами).
Есть ли лучший способ сделать это? Для каждого запроса, который я делаю, мне нужно будет создать класс, с которым может быть сопоставлен запрос, и мне нужно будет определить класс
Entity
package com.payunow.socialsharemodule.models;
import java.util.Map;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Share {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String key;
private String key1;
private Map<String,String> platform_settings;
public Share(String name, String description,Map<String,String> platform_settings) {
this.key = key;
this.key1 = key1;
this.platform_settings = platform_settings;
}
//for JPA
public Share() {}
public String getKey() {
return key;
}
public String getKey1() {
return key1;
}
public Map<String,String> getPlatform_settings() {
return platform_settings;
}
}
Для каждого запроса, который я делаю, мне придется создать класс, определяющий все его переменные внутри. Это единственный способ сделать это?
json-simple
, которая не заставляет вас создавать оболочку для вашего ответа, вы можете работать с такими объектами, как JSONArray и JSONObject, а затем соответствующим образом преобразовывать эти объекты. Но если ваш ответ каждый раз имеет один и тот же формат, я предлагаю создать класс-оболочку для Джексона. - person Japu_D_Cret   schedule 30.03.2017whether should I always map request to a class or not
если вы хотите получить все до последней крупицы производительности при обработке ответов, то либо вообще не анализируйте json, либо анализируйте его только настолько, насколько это необходимо, с помощью json-simple. Если вы хотите надежно работать с ответом и иметь строго типизированный объект, с которым удобнее работать, чем я предлагаю вам взять небольшой дефицит времени и полностью преобразовать его в POJO с Джексоном или тому подобное. Если вы хотите работать с ней так же, как с Python, вам подойдет библиотека json-simple. - person Japu_D_Cret   schedule 30.03.2017