Первый метод
Я полагаю, что когда вы получаете список объектов из хранилища, вы можете составить список карт, затем для каждого объекта вы можете сначала преобразовать его в карту, а затем просто удалить ключ, соответствующий объекту, который не нужно сериализовать из соответствующей карты, он будет выполнен для всего объекта и вернет список карты, потому что, как мы знаем, строка JsonFormat представляет собой не что иное, как комбинацию пары ключ-значение, поэтому просто взглянув на json output В таком случае трудно определить, является ли это объектом или картой.
Здесь необходимо изменить тип возвращаемого значения на Список карты
Вы можете преобразовать объект в карту, используя Джексон ObjectMapper
ниже приведен пример
ObjectMapper objectMapper = new ObjectMapper();
UserName obj = new UserName();
obj.setName("mss");
obj.setSkills(Arrays.asList("java","spring"));
Map<String, Object> map = objectMapper.convertValue(obj, Map.class);
System.out.println(map);
Вывод
{name=mss, skills=[java, spring]}
Второй метод
, если вы считаете, что это слишком много затем вы можете сначала преобразовать полученный из репозитория список в jsonArray, а затем для каждого jsonObject в jsonArray удалить соответствующий ключ, который tches с именем поля, которое вы хотите сериализовать
Edit : извините, я не знал, что вы можете повторять только для каждого l oop в случаях java .lang.Iterable. JSONArray не является одним из них. поэтому мы будем использовать нормальную переменную для l oop с помощью длины JSONArray
@Service
public class CatalogService {
@Autowired
VAddressesRepository vAddressesRepository;
public JSONArray listAddressesByStreetCode(String streetCode, String showDoor ) {
// The following repository output should contain every VAddresses attribute or every attribute but 'door', depending on the parameter 'showDoor '
List<VAddresses> lists = vAddressesRepository.findByStreetCode(Integer.valueOf(streetCode));
JSONArray jsonArray = new JSONArray(new ObjectMapper().writeValueAsString(lists));
int n = jsonArray.length();
for(int i = 0; i < n; ++i){
JSONObject jsonObject = (JSONObject)jsonArray.get(i);
jsonObject.remove(showDoor); // removing the key matching with the required field that is to be not serialized, key has to be in string format
jsonArray.put(i , jsonObject);
/* put the updated jsonObject in the index, even through Java is reference type so when you deleted the key
from jsonObject it should be updated in jsonArray index i, but for surety */
}
return jsonArray;
}
, дайте мне знать, работает она или нет