gpt4 book ai didi

java - 如何使用java读取JSON对象文件并将其传递给请求

转载 作者:行者123 更新时间:2023-12-02 03:48:37 24 4
gpt4 key购买 nike

我正在使用以下代码:-

import org.json.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.junit.Assert;
import org.junit.Test;
import network.Authorization;
import network.ContentType;
import network.HTTPHelper;
import network.HTTPRequest;
import network.HTTPResponse;

import static org.junit.Assert.*;

import java.io.FileReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public void testSendPOSTRequest() {
try {
HTTPRequest request = new HTTPRequest();

request.url = "https://myURL/api/products";
request.contentType = ContentType.JSON;
Map<String, String> authKeyValue = new HashMap<>();
authKeyValue.put(Authorization.Type.toString(), "Token token=zkz,email=test7@gmail.com");
request.setAuthorization(authKeyValue);

JSONParser parser = new JSONParser();

try {

Object obj = parser.parse(new FileReader("./src//productApi"));

JSONObject jsonObject = (JSONObject) obj;

String name = (String) jsonObject.get("Name");
String author = (String) jsonObject.get("Author");
JSONArray companyList = (JSONArray) jsonObject.get("Company List");

System.out.println("Name: " + name);
System.out.println("Author: " + author);
System.out.println("\nCompany List:");
Iterator<String> iterator = companyList.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}

} catch (Exception e) {
e.printStackTrace();
}



HTTPHelper helper = new HTTPHelper();
HTTPResponse response = helper.sendPOSTRequest(request);

System.out.println("POST Success");
System.out.println("Response code: " +response.statusCode.toString());
System.out.println("Payload: " +response.payload);
assertTrue(true);

} catch (Exception e) {
System.out.println(""+e.getMessage());
assertTrue(false);
} finally {
System.out.println("Exist Run");
}

我也在下面的行中遇到错误:-

  Iterator<String> iterator = companyList.iterator();

Eclipse 显示为提示/错误:-

The method iterator() is undefined for the type JSONArray

Add to cast to

任何人都可以给我上述问题的解决方案或任何替代方法,以便我可以从文件中读取 JSON 对象并将其作为请求直接传递给有效负载

最佳答案

假设您正在使用 org.json.JSONArray 对象。

关于您遇到的“iterator() 未定义”问题。您之所以得到它,是因为没有为 JSONArray 类定义 iterator()

如果您确实想打印 JSONArray 对象,您可以使用以下命令:

System.out.println(companyList);

而不是

Iterator<String> iterator = companyList.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}

这应该消除错误:

The method iterator() is undefined for the type JSONArray

这之所以有效,是因为以下 toString()定义。据我了解,这会生成一个有效的 JSON 字符串。您应该能够在响应数据中简单地使用 companyList.toString() 。事实上,根据this page ,以下是序列化 JSONObject 的“正确”方法:

JSONObject object = ...
String json = object.toString();

您还可以通过执行以下操作循环遍历 JSONArray 中的对象:

for(int i = 0; i < companyList.length(); i++){
Object obj = companyList.get(i); //Then use obj for something.
}

如果您知道数据类型,那么您可以使用 other get alternatives 中的任何一个也是如此。

关于java - 如何使用java读取JSON对象文件并将其传递给请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36081273/

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