Изменить атрибут объекта Json, предоставив другой атрибут из того же узла - PullRequest
0 голосов
/ 30 апреля 2019

Я получил JSON (строку или файл).Давая узел, который возвращает список, у меня есть кортеж ключ-значение, чтобы идентифицировать элемент из этого списка и изменить другой атрибут.

По сути, из узла я получаю нечто похожее на типичный пример книги

...

[
  {
    "professionalRisk": "Medium",
    "firstName": "Sh�ra",
    "lastName": "Y�ung",
    "riskActivity": "Recreational sports",
    "dateOfBirth": "1991-12-12",
    "@id": "2",
    "title": "Frau",
    "individualTravelPrice": {
      "#text": "20",
      "@currency": "EUR"
    },
    "@role": "INSURED"
  },
  {
    "professionalRisk": "Medium",
    "firstName": "Shashank",
    "lastName": "Tripathi",
    "riskActivity": "Recreational sports",
    "dateOfBirth": "1995-05-23",
    "@id": "3",
    "title": "Herr",
    "individualTravelPrice": {
      "#text": "100",
      "@currency": "EUR"
    },
    "@role": "INSURED"
  },
  {
    "professionalRisk": "Medium",
    "firstName": "J�hn",
    "lastName": "Y�nus",
    "riskActivity": "Recreational sports",
    "dateOfBirth": "2017-12-12",
    "@id": "4",
    "title": "Herr",
    "individualTravelPrice": {
      "#text": "258.15",
      "@currency": "EUR"
    },
    "@role": "INSURED"
  },
  {
    "professionalRisk": "Medium",
    "firstName": "S�m�el",
    "lastName": "Polo",
    "riskActivity": "Recreational sports",
    "dateOfBirth": "1940-05-10",
    "@id": "5",
    "title": "Herr",
    "individualTravelPrice": {
      "#text": "10072",
      "@currency": "EUR"
    },
    "@role": "INSURED"
  },
  {
    "professionalRisk": "Medium",
    "firstName": "Gli �ernch",
    "lastName": "Fedrick",
    "riskActivity": "Recreational sports",
    "dateOfBirth": "1930-12-12",
    "@id": "6",
    "title": "Herr",
    "individualTravelPrice": {
      "#text": "1000",
      "@currency": "EUR"
    },
    "@role": "INSURED"
  }
]

...

Моя главная проблема заключается в том, что мне нужно идентифицировать один из элементов и изменить другое значение.

Например, имея @ Id = 4, я должен изменить «title» на «Frau»

Я уже импортировал следующие библиотеки:

import com.google.gson.Gson; 
import com.google.gson.GsonBuilder;
import io.restassured.path.json.JsonPath;
import org.apache.commons.beanutils.PropertyUtils;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.junit.Assert;

попытаться реализовать следующие неполныеcode

public String setAttribute (String sourceStringOrFilePath, String nodeToSet, String attributeKey, String attributeValue, String attributeToSet, String newValue) {sourceStringOrFilePath = stringOrFilePath (sourceStringOrFilePath * 10 * * 10 *this

{professionalRisk=Medium, firstName=Sh�ra, lastName=Y�ung, riskActivity=Recreational sports, dateOfBirth=1991-12-12, @id=2, title=Frau, individualTravelPrice={#text=20, @currency=EUR}, @role=INSURED}
{professionalRisk=Medium, firstName=Shashank, lastName=Tripathi, riskActivity=Recreational sports, dateOfBirth=1995-05-23, @id=3, title=Herr, individualTravelPrice={#text=100, @currency=EUR}, @role=INSURED}
{professionalRisk=Medium, firstName=J�hn, lastName=Y�nus, riskActivity=Recreational sports, dateOfBirth=2017-12-12, **@id=4, title=Herr**, individualTravelPrice={#text=258.15, @currency=EUR}, @role=INSURED}
{professionalRisk=Medium, firstName=S�m�el, lastName=Polo, riskActivity=Recreational sports, dateOfBirth=1940-05-10, @id=5, title=Herr, individualTravelPrice={#text=10072, @currency=EUR}, @role=INSURED}
{professionalRisk=Medium, firstName=Gli �ernch, lastName=Fedrick, riskActivity=Recreational sports, dateOfBirth=1930-12-12, @id=6, title=Herr, individualTravelPrice={#text=1000, @currency=EUR}, @role=INSURED}

Необходимость идентификации и изменения атрибутов в **

После решения этой проблемы у меня уже есть функция, которая устанавливаетмодифицированный узел в указанном исходном пути

...