如何在Java中生成随机JSON字符串?

时间:2014-11-07 06:49:20

标签: java json testing

我想测试一个apache kafka的功能。所以我需要在Java中生成随机的JSON字符串。(我的生产数据是JSON格式。)

我谷歌,我找到了网站:

这些不是最好的答案。

在ruby中,the gem faker可以生成虚假数据。

在Java中,哪些库可以生成虚假数据?什么库可以生成假的JSON字符串?

2 个答案:

答案 0 :(得分:2)

检查这个开源java库randomizer。 基于YOUR_MODEL_CLASS使用注释随机数据生成是可能的。

Generator<YOUR_MODEL_CLASS> generator = new Generator<>(YOUR_MODEL_CLASS.class);
List<YOUR_MODEL_CLASS> fakeObj = generator.generate(NO_OF_RECORDS);
Gson gson = new Gson();
String jsonString = gson.toJson(fakeObj);

有许多内置注释,我们可以在YOUR_MODEL_CLASS中定义的实例变量上设置。通过库页面上的指南。

答案 1 :(得分:2)

您可以使用mockneat来执行此操作。它是一个专门生成各种“假”数据的库。查看the documentation,了解您可以“伪造”的内容以及操作方式。

wiki page向您展示如何生成随机JSON:

MockNeat mockNeat = MockNeat.threadLocal();
Gson gson = new GsonBuilder()
                        .setPrettyPrinting()
                        .create();

String json = mockNeat
                     .reflect(UserProfile.class)
                     .field("name", mockNeat.names().full())
                     .field("userName", mockNeat.users())
                     .field("email", mockNeat.emails())
                     .field("profiles",
                                mockNeat.reflect(Profile.class)
                                        .field("profileId", mockNeat.ints().range(100, 1000))
                                        .field("profileAdded", mockNeat.localDates().toUtilDate())
                                        .list(2))
                     .map(gson::toJson) /* Transforms the UserProfile class into a 'pretty' json. */
                     .val();

System.out.println(json);

并且给定的结果(当然,结果每次都不同):

{
  "name": "Cecila Starbird",
  "userName": "moistben",
  "email": "randiexyst@hotmail.co.uk",
  "profiles": [
    {
      "profileId": 964,
      "profileAdded": "Mar 19, 1973 12:00:00 AM"
    },
    {
      "profileId": 854,
      "profileAdded": "Jun 3, 1978 12:00:00 AM"
    }
  ]
}

免责声明:我是图书馆的作者。