【问题标题】:Inject dynamically generated data into JSON将动态生成的数据注入 JSON
【发布时间】:2015-01-26 13:19:01
【问题描述】:

我开发了一个工具,可以测试一些对服务器的请求,请求本身只不过是一些简单的JSON文件,存储在磁盘上,可以连续添加,但是……还有一件事, JSON文件包含一个电子邮件地址,每次运行项目时都需要更改,这是因为每个用户都有一个个人电子邮件,我这样做是因为服务器不能接受来自用户的多个请求.所以我正在寻找一种将这个电子邮件地址动态注入 JSON 的解决方案。

我为此使用 Java,还为 REST API 使用 jayway,为 JSON 使用 Gson。到目前为止,我查看了谷歌,但根本找不到任何东西。

【问题讨论】:

  • 你是如何加载 JSON 的?如果您要完整加载它,则可以使用 java.util.Formatter 来执行此操作。
  • 您可以通过以下解决方案做到这一点: - 使用 json 文件作为模板字符串,并使用“{email: ${e-mail}}”等标记,然后只需使用jsonTemplate.replace("${e-mail", email[i]) - 将 json 解析为 Map或对象该模型请求,然后更改电子邮件字段并从中再次构建 json
  • @JeffWatkins 我将其加载为jsonFixture(jsonPath); @Mati 好的,我现在正在尝试
  • @Mati 它有效,您可以添加您的答案,我会接受。谢谢大家。
  • 将 JSON 解析成 Maps/Lists,根据需要更新,序列化。

标签: java json


【解决方案1】:

您可以通过以下解决方案做到这一点:

  • 使用 json 文件作为模板字符串,标记如“{email: ${e-mail}}”,然后只需使用jsonTemplate.replace("${e-mail}", email[i])
  • 将 json 解析为该模型请求的 Map 或 Object,然后更改电子邮件字段并从中重新构建 json

【讨论】:

    【解决方案2】:

    使用 Gson。

        Gson gson = new Gson();
    
        String yourJsonInStringFormat = " {\"email\":placeHolder,\"password\":\"placeHolder\"}";
    
        Map map = gson.fromJson(yourJsonInStringFormat, Map.class);
    
        map.put("email", "jose@com.com");
        map.put("password", "123456");
        String newJson = gson.toJson(map);
        System.out.println(newJson);
    

    打印出来:

    {"email":"jose@com.com","password":"123456"}
    

    被注入的字段不需要已经存在。例如,这也有效:

        Gson gson = new Gson();
    
        String yourJsonInStringFormat = "{}";
    
        Map map = gson.fromJson(yourJsonInStringFormat, Map.class);
    
        map.put("email", "jose@com.com");
        map.put("password", "123456");
        String newJson = gson.toJson(map);
        System.out.println(newJson);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-31
      • 1970-01-01
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多