gpt4 book ai didi

java - 使用 Java Spring Boot 获取 Json 项目的值

转载 作者:行者123 更新时间:2023-12-02 09:02:09 25 4
gpt4 key购买 nike

我正在尝试从下面的 Json 文件中提取 API 数据。我想检索每个“项目”的“名称”。

检索到“名称”后,我想创建一个新的 Json,其中包含:{名称:“托托”,名称:“蒂蒂”....}

目标是在我这边创建一个 API,该 API 可以通过 http://localhost/getitems 进行调用。将返回创建的Json的结果。

我是 Java 和 Spring Boot 的新手,所以如果您认为有更简单的代码,请告诉我,我希望您能帮助我轻松创建新的 Json 文件。谢谢!

// Json File (it has been reduced, more than 700 name are present)
{
"kind": "Space",
"apiVersion": "v1",
"metadata": {
"selfLink": "something",
"resourceVersion": "something"
},
"items": [
{
"metadata": {
"name": "projet1"
}
},
{
"metadata": {
"name": "com-cicd"
}
}
]
}

// TestGet.java Class
public static NameSpaceJson getPostWithCustomHeaders(String DebutUrl, String MilieuUrl, String ParamUrl) {
String url = DebutUrl.concat(MilieuUrl).concat(ParamUrl);
String Bearer = "...";


// create headers & template
HttpHeaders headers = new HttpHeaders();
RestTemplate restTemplate = new RestTemplate();

// set `accept` header for the type of response
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));

// set custom header, bearer here too
headers.set("x-request-source", "desktop");
headers.set("Authorization", "Bearer "+Bearer);

// build the request
@SuppressWarnings({ "rawtypes", "unchecked" })
HttpEntity request = new HttpEntity(headers);

// use `exchange` method for HTTP call, this one permits us to use bearer for auth
ResponseEntity<NameSpaceJson> response = restTemplate.exchange(url, HttpMethod.GET, request, NameSpaceJson.class, 1);
if(response.getStatusCode() == HttpStatus.OK) {
return response.getBody();
} else {
return null;
}
}
// The name in the same file
public static void main(String[] args) {
TestGet.disableSSLCertificateChecking();
NameSpaceJson resultresponse = getPostWithCustomHeaders("https...","api","names");
// Long response = resultresponse.getValue().getId();
List<Item> response = resultresponse.getItems();

String test = GenerateNewJsonNameSpace.createJsonContent(response);


System.out.println(test);
}
//NameSpaceJson.java File
package com.example.consumingrest;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true)
public class NameSpaceJson {

private String kind;
private String apiVersion;
private List<Item> items;

public String getKind() {
return kind;
}

public void setKind(String kind) {
this.kind = kind;
}

public String getApiVersion() {
return apiVersion;
}

public void setApiVersion(String apiVersion) {
this.apiVersion = apiVersion;
}

public List<Item> getItems() {
return items;
}

public void setItems(List<Item> items) {
this.items = items;
}
}
//Metadata.java
package com.example.consumingrest;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true)
public class Metadata {

private String name;
private String creationTimestamp;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getCreationTimestamp() {
return creationTimestamp;
}

public void setCreationTimestamp(String creationTimestamp) {
this.creationTimestamp = creationTimestamp;
}
}
//Item.java
package com.example.consumingrest;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true)
public class Item {

Metadata metadata;

public Metadata getMetadata() {
return metadata;
}


public void setMetadata(Metadata metadata) {
this.metadata = metadata;
}
}
// GenerateNewJsonNameSpace ( this is what i have tried.. but i'm sure we can do really better.. )
package com.example.consumingrest;

import java.util.List;

public class GenerateNewJsonNameSpace {

public static String createJsonContent(List<Item> ListOfNameSpace) {

if(ListOfNameSpace.isEmpty()) {
return null;
}else {
String LeJson;
LeJson = "{";
for(int i = 0; i < ListOfNameSpace.size(); i++) {
LeJson.concat(ListOfNameSpace.get(i).getMetadata().getName());
LeJson.concat(", \n");
}
LeJson.concat("}");
return LeJson;
}


}
}

最佳答案

您可以使用名为 Gson 的库,它是由 google 创建的专门用于处理 JSON 数据的库。

您需要做的就是创建一个新的 Gson 对象并用它解析 JSON。只需几行即可完成

String jsonString = "{\"kind\":\"Space\",\"apiVersion\":\"v1\",\"metadata\": {\"selfLink\":\"某事\”,\“资源版本\”:\“某事\”},\“项目\”:[{\“元数据\”:{\“名称\”:\“projet1\”}},{\“元数据\": {\"name\":\"affeccom-cicd\"} } ] }";

    JsonObject data = new Gson().fromJson(jsonString, JsonObject.class);
JsonArray names = data .get("items").getAsJsonArray();
for(JsonElement element : names){
JsonObject object = element.getAsJsonObject();
System.out.println(object.get("metadata").getAsJsonObject().get("name").getAsString());
}

关于java - 使用 Java Spring Boot 获取 Json 项目的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60082883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com