Как модулировать код для JsonObject и JsonArray для чтения файлов Json на уровне класса.Который я использую позже, чтобы написать тестовые случаи - PullRequest
0 голосов
/ 16 апреля 2019

Я использую библиотеку GSON для чтения файла JSON для моей автоматизации.Для которого мне нужно прочитать файл и затем создать объект json при обходе JSON.

Позже я использую эти объекты для изменения JSON. Я хочу уменьшить код для обхода json каксоздается много объектов.

Хотя это прекрасно работает.Просто мне нужно модулировать код.

Добавление кода с URL-адресом, откликом и пользователем JSON

Url.json

{"users":
{"addUser": "<URL>/addUser","editUser": "<URL>/editUser"}
}

Ответ .json

[
{"success":true},
{"success":false}
]

User.json

{

"addUsers":
{"userAttributes":{  
  "lst":"lastname",
  "id":"username",
  "Password":"password"
}
},
"updateUsers":

{ "userAttributes":{  
 "Password":"password"
}}}

Java Code

public class UsersSameFile extends ReaderUtil{

JsonObject userjs = JsonReaderUtil.readGSONObject("./requestJson/User.json");
JsonObject urljs = JsonReaderUtil.readGSONObject("./urlsJson/Url.json");
JsonArray res = JsonReaderUtil.readGSONArray("./responseJson/response.json");

JsonObject addUsers = userjs.get("addUsers").getAsJsonObject();
JsonObject userAttributes = addUsers.get("userAttributes").getAsJsonObject();
JsonObject usersurl = urljs.get("users").getAsJsonObject();
JsonObject success = res.get(0).getAsJsonObject();

@Given("^Add a user$")
public void add_a_user_json_payloads() throws Throwable {

    userAttributes.addProperty("lst", getValue("UserOne"));
    userAttributes.addProperty("id",getValue("UserOne"));
    userAttributes.addProperty("Password",getValue("password"));

    System.out.println(addUsers);
    System.out.println("This returns me the updated JSON. How can i reduce the code at class level for reading in JSON objects from file. I am using this for API automation")


}
}

ReadGSON.java

public static JsonObject readGSONObject(String file) {

    try {
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        File jsonFile = new File(file);
        String jsonString = FileUtils.readFileToString(jsonFile);
        JsonElement jelement = new JsonParser().parse(jsonString);
        JsonObject jobj=jelement.getAsJsonObject();

        return jobj;

    } catch (FileNotFoundException e) {
        // TODO: handle exception
    }
    catch (IOException e) {
        // TODO: handle exception
    }
    return null;

}

Actual В настоящее время я создаю несколько объектов для чтения этого файла jOSN, а затем с использованием того же самого я обновляю свой JSON.

Ожидается Могу ли я модулировать этот подход кода.

1 Ответ

0 голосов
/ 16 апреля 2019

Да, вы можете:

public static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); //you can reuse gson as often as you like

public <T> static T readJson(String file){
try{
FileReader fr = new FileReader(new File(file)); //gson takes a filereader no need to load the string to ram
T t = GSON.fromJson(fr, T.getClass());
fr.close(); //close the reader
return t;
}catch(Error e){
//ignore or print, if you need
}
}
...