Перевод json в строковую переменную - PullRequest
0 голосов
/ 06 августа 2020

Я работаю над разработкой веб-сервиса, который связывает два приложения друг с другом, первое приложение отправит объект json второму. Я застрял в переводе этого json объекта:

$body = "{"fields":{"project":{"key":"'+$projectKey+'"}
,"issuetype":{"name": "'+$issueType+'"}
,"summary":"'+$summary+'"
,"description":"'+$description+'"
,"customfield_12721":"'+$FirstName+'"
,"customfield_12722":"'+$LastName+'"
,"customfield_12723":{"value":"'+$EmployeeCategory+'"}
,"customfield_12732":"'+$Externalfunction+'"
,"customfield_12725":"'+$CorporateID+'"
,"customfield_12726":{"value":"'+$VermegCompany+'"}
,"customfield_12685":{"value":"'+$IndusRegion+'"}
,"customfield_12673":{"value":"'+$Product+'"}
,"customfield_12727":{"value":"'+$Profile+'"}
,"customfield_12667":{"name":"'+$Manager+'"}
,"customfield_12708":"'+$BeginDate+'"
,"customfield_14000":"'+$Reglementation+'"
,"customfield_14001":"'+$Department+'"
,"customfield_14002":"'+$SubDepartment+'"} 

}";

в строковую переменную, например:

String json = "{fields:{project:{\"key\":\""+ projectkey +"}"       
         + "\",\"issuetype\":\"" 
         + "\",\"customfield_12721\":\"" + employee.getFirstName()
         + "\",\"description\":\"" + description
         + "\",\"summary\":\"" + summary    
         + "\",\"customfield_12722\":\""+ employee.getLastName()
         + "\",\"customfield_12732\":\"" + employee.getFte()
         + "\",\"customfield_14000\":\"" + employee.getReglementation()
         + "\",\"customfield_14001\":\"" + employee.getDepartment()
         + "\",\"customfield_14002\":\"" + employee.getSubdepartment()
         + "\",\"fulltime\":" + Math.round(Double.parseDouble(employee.getFulltime().replaceAll(",",".")))
         //+ ",\"email\":\"" + employee.getEmail()
         +   ",\"citizenship\":\"" + employee.getCitizenship()
         + "\",\"gnn\":\""+ employee.getGnn()
         + "\",\"company\":\"" + employee.getCompany()
         + "\",\"employeeid\":\"" + employee.getEmployeeid()
         + "\",\"customfield_12708\":\"" + employee.getStartdate()
         //+ "\",\"enddate\":\"" //+ employee.getEnddate()
    
         + "\",\"product\":\"" + employee.getProduct()
         + "\",\"customfield_12725\":\"" + employee.getInternalnumber()
        // + "\",\"employeeid\":\"" + employee.getEmployeeid()
         + "\"}}";

Не могли бы вы помочь?

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

Здесь вы можете использовать библиотеку JsonConvert для получения json данных. Ниже показан пример использования

String json = "{\"FirstName\":\"Jack\",\"LastName\":\"Tor\"}";

            var data = Newtonsoft.Json.JsonConvert.DeserializeObject(json);

            Console.WriteLine(data);
            Console.ReadLine();
0 голосов
/ 06 августа 2020

Использование веб-инструмента

Если вы просто хотите быстро преобразовать его в строку, вы можете использовать Json в String преобразователь в Интернете .

Использование библиотеки

Однако, если вам нужно хорошее решение в ваших приложениях, способ решить эту проблему - сериализовать и проанализировать с использованием библиотеки, такой как GSON . Это, конечно, если вы не собираетесь создавать это преобразование самостоятельно.

GSON довольно прост в использовании и позаботится о переводе за вас. См. Пример ниже:

Приложение-отправитель:

Gson gson = new Gson();
String jsonStr = gson.toJson(employee); // Serialize (from Java class to JSON string)

// Send data (jsonStr) ...

Приложение-получатель:

// Receive data (jsonStr) ...

Gson gson = new Gson();
Employee employee = gson.fromJson(jsonStr); // Parse (from JSON string to Java class)

GSON будет по умолчанию называть поля такими же, как имена переменных-членов в классе Java. Если вам нужно изменить имена полей в строке JSON, вы можете использовать @SerializedName("newName") перед переменными-членами.

Пример:

class Employee {
  ...
  @SerializedName("customfield_12721") String firstName;
  ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...