Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从API获取数据,并将其用作POST调用的有效负载_Java_Json_Rest Assured_Web Api Testing_Rest Assured Jsonpath - Fatal编程技术网

Java 从API获取数据,并将其用作POST调用的有效负载

Java 从API获取数据,并将其用作POST调用的有效负载,java,json,rest-assured,web-api-testing,rest-assured-jsonpath,Java,Json,Rest Assured,Web Api Testing,Rest Assured Jsonpath,我有这个测试场景,我需要 从API获取详细信息 将其写入文件 更新JSON数组并更新文件 将新文件用作有效负载 我已经能够完成前两个步骤,但无法继续后续步骤,因为我没有在Java中使用JSON 步骤1的API结果: {"id":123,"type":"employee","employee_id":"5162231","full_name":"Mark Hamil","email_id":"mark_ham@ham.test","created_at":"2014-03-26","updat

我有这个测试场景,我需要

  • 从API获取详细信息
  • 将其写入文件
  • 更新JSON数组并更新文件
  • 将新文件用作有效负载
我已经能够完成前两个步骤,但无法继续后续步骤,因为我没有在Java中使用JSON

步骤1的API结果:

{"id":123,"type":"employee","employee_id":"5162231","full_name":"Mark Hamil","email_id":"mark_ham@ham.test","created_at":"2014-03-26","updated_at":"2015-04-06","empno":9122,"branches":[{"name":"Assets","asset_id":"56","attr_typ":"Assets","asset_path":"12-34-56789","is_pr":false,"is_lead":false},{"name":"Retail Banking","asset_id":"8","attr_typ":"RB","asset_path":"8-12-11221","is_pr":false,"is_lead":true},{"name":"Corporate Banking","asset_id":"94","attr_typ":"CB","asset_path":"94-122-22123","is_pr":false,"is_lead":true},{"name":"Rural Banking","asset_id":"118","attr_typ":"RuB","asset_path":"97-1188","is_pr":false,"is_lead":true}],"email_freq":{"id":21,"immediately":"N","daily":"N","weekly":"N","monthly":"N","ind_id":1136},"responsible_for":[{"region":"AS","office_code":"TH","office_loc":"BNK","name":"Asia - Thailand - Bangkok"}]}
要进行的更新:

{"id":123,"type":"employee","employee_id":"5162231","full_name":"Mark Hamil","email_id":"mark_ham@ham.test","created_at":"2014-03-26","updated_at":"2015-04-06","empno":9122,"branches":[{"name":"Assets","asset_id":"56","attr_typ":"Assets","asset_path":"12-34-56789","is_pr":false,"is_lead":false},{"name":"Retail Banking","asset_id":"8","attr_typ":"RB","asset_path":"8-12-11221","is_pr":false,"is_lead":true},{"name":"Corporate Banking","asset_id":"94","attr_typ":"CB","asset_path":"94-122-22123","is_pr":false,"is_lead":true},{"name":"Rural Banking","asset_id":"118","attr_typ":"RuB","asset_path":"97-1188","is_pr":false,"is_lead":true}],"email_freq":{"id":21,"immediately":"N","daily":"N","weekly":"N","monthly":"N","ind_id":1136},"responsible_for":[{"region":"AS","office_code":"TH","office_loc":"BNK","name":"Asia - Thailand - Bangkok"}]}
需要在键的
responsible\u中为responsible office添加一个新的json对象。
responsible\u key
的更新值需要如下所示

"responsible_for":[{"region":"AS","office_code":"TH","office_loc":"BNK","name":"Asia - Thailand - Bangkok"},{"region":"AS","office_code":"ML","office_loc":"KLP","name":"Asia - Malaysia - Kualalumpur"}]}
到目前为止的代码

我制作了一个方法,一次完成所有四个步骤-

     public static void change_person_details_json()throws IOException {

     // get the person details after appending the id with base path/person          

 HelperRest.hitGetRequest(ConfigReader.getBaseUrl()+"person/"+HelperRest.get_person_id());
                 System.out.println(HelperRest.getResponse().body().asString());
                 HelperRest.logEverything();

    //write the API response to a json file
                 try(FileWriter writer = new FileWriter(ConfigReader.getRequestPayloadFilePath()+"update-json.json")){
                     writer.write(HelperRest.getResponse().body().asString());
                     writer.flush();
                 } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

第三点我可以帮你。将元素添加到JSON

我使用了
org.json
library

        <!-- https://mvnrepository.com/artifact/org.json/json -->
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20180813</version>
        </dependency>
你可以用

String jsonResponse = HelperRest.getResponse().body().asString();

JSONObject root = new JSONObject(jsonResponse);
JSONArray responsibleForArray = root.getJSONArray("responsible_for");

HashMap<String, String> newResponsibleForMap = new HashMap<>();
newResponsibleForMap.put("region", "AS");
newResponsibleForMap.put("office_code", "ML");
newResponsibleForMap.put("office_loc", "KLP");
newResponsibleForMap.put("name", "Asia - Malaysia - Kualalumpur");

responsibleForArray.put(newResponsibleForMap);

System.out.println(root);
String jsonResponse=HelperRest.getResponse().body().asString();
JSONObject根=新的JSONObject(jsonResponse);
JSONArray responsibleforary=root.getJSONArray(“responsibleforary”);
HashMap newResponsibleForMap=新HashMap();
新责任格式出售(“地区”、“AS”);
新责任格式文件(“办公室代码”、“ML”);
新的责任格式文件(“办公室地址”、“KLP”);
新的责任格式(“名称”,“亚洲-马来西亚-吉隆坡”);
responsibleforary.put(新的responsibleformap);
System.out.println(根);

希望它在某些方面有所帮助

你是否对所有四个任务都有问题?如前所述,我能够完成前两个任务——如果你在JSON中总是有相同的结构,那么你可以考虑为它创建一个对象,并简单地替换你需要的部分。查看json结构是否保持不变。只有负责的\u中的值changes@demouser123你明白了吗?:)