如何将JSON转换为Hashmap对象

时间:2018-03-01 21:20:22

标签: java json

我正在尝试为我正在通过PUT主体的休息服务自动化PUT请求。我正在尝试使用HashMap为正文创建一个对象并为其添加值。 我不确定如何使用Hashmap为嵌套的JSON元素添加值。

我的身体是这样的: {

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { RequestOptions } from '@angular/http';
import { Observable } from 'rxjs/Observable';

    @Injectable()
    export class RequestService {

      private requestOptions = {
        headers: new HttpHeaders({'Locale': 'en_US'})
      };

      constructor(private http: HttpClient) { }

      callEndpoint(state: string, countryCode: string): Observable<Object> {
        return this.http.get(`https://endpointurl.com`,this.requestOptions);
      }
}

我的代码如下:

    "versions": [
        {
            "versionname": "Test",
            "number": 1

        }
    ],
    "id": 19,
    "name": "TEST",


}

我的问题是如何为&quot; versionname&#39;添加值?和&#39;数字&#39;元素进入地图,以便我可以在我的PUT请求的身体中传递它?任何帮助非常感谢。

1 个答案:

答案 0 :(得分:0)

使用严格打字,如果你知道你的有效载荷,请不要使用地图(从头顶输入,可能不会立即编译):

public class Request {

  public static class Version {
    public String versionname;
    public int number;

    protected Version() {} // for deserializer

    public Version(String versionname, int number) {
      this.versionname = versionname;
      this.number = number;
    }
  }

  public List<Version> versions = new ArrayList<>();
  public int id;
  public String name;
}

Request request = new Request();
request.versions.add(new Version("Test", 1));
request.id = 19;
request.name = "TEST";

String jsonString = new ObjectMapper().writeValueAsString(request);

Request deserialized = new ObjectMapper().readValue(jsonString, Request.class);