【问题标题】:Get Data in JSON Format as expected from a Java Restful API从 Java Restful API 按预期获取 JSON 格式的数据
【发布时间】:2016-09-23 12:06:18
【问题描述】:

现在的输出是:

{
 "Product_Type":
    "[{\"active\":true,\"description\":\"ALL IN ONES\",\"id\":2},     
      {\"active\":true,\"description\":\"ACCESSORIES\",\"id\":1}]",
 "Product_Brand":
    "[{\"active\":false,\"brand\":\"101 DALMATIANS\",\"id\":1}]"
}

预期是:

{
 "Product_Type":
    [{"active":true,"description":"ALL IN ONES","id":2},     
      {"active":true,"description":"ACCESSORIES","id":1}],
 "Product_Brand":
    [{"active":false,"brand":"101 DALMATIANS","id":1}]"
}

我有以下返回 json 数据的 api 代码。

Code:
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("brand")
public String getProductBrand() {       
    return attributeMasterService.getProductBrand() + 
            attributeMasterService.getProductType();        
}   

输出:

[{"active":false,"brand":"101 DALMATIANS","id":1}]      
[{"active":true,"description":"ACCESSORIES","id":1},     
{"active":true,"description":"ALL IN ONES","id":2}]

我需要帮助以获取下面提到的格式的数据。

基本上我需要将文档名称附加到数组中。

[
Product_Brand:
[    {"active":false,"brand":"101 DALMATIANS","id":1}],
Product_Type:
[    {"active":true,"description":"ALL IN ONES","id":2},     
     {"active":true,"description":"ACCESSORIES","id":1}]
]  

您能帮我构建上述结果吗?

谢谢,

【问题讨论】:

    标签: java json api


    【解决方案1】:

    我建议您使用 JSON API 并使用它传递您的 DTO 对象。您需要定义一个 DTO 类,例如:

        public class A { 
            List<ProductBrand> brands; 
            List<ProductType> types; 
    
            //getter and setter methods
        }
    

    然后创建一个实例并设置它的字段。将此类转换为 JSON 并返回它会解决您的问题。

    【讨论】:

      【解决方案2】:

      使用这个。

      JSONObject json1 = new JSONObject();
      json1.put("Product_Brand", attributeMasterService.getProductBrand());
      json1.put("Product_Type", attributeMasterService.getProductType());
      return json1.toString();
      

      试试这个。

      JSONObject json1 = new JSONObject();
      ObjectMapper mapper = new ObjectMapper();
      String jsonInString = mapper.writeValueAsString(attributeMasterService.getProductBrand());
      String jsonInString1 = mapper.writeValueAsString(attributeMasterService.getProductType());
      JSONParser parser = new JSONParser();
      JSONArray json = (JSONArray) parser.parse(jsonInString);
      JSONArray json2 = (JSONArray) parser.parse(jsonInString1);
      json1.put("Product_Brand", json);
      json1.put("Product_Type", json2);
      return json1;
      

      【讨论】:

      • 嗨米奇,我是 Java 新手。感谢您在详细解释方面的帮助。
      • 对此发表评论(返回 attributeMasterService.getProductBrand() + attributeMasterService.getProductType();) 并复制我的代码。 @user2797894
      • 谢谢米奇,但这导致了转义字符。 {"Product_Type":"[{\"active\":true,\"description\":\"ALL IN ONES\",\"id\":2}, {\"active\":true,\" description\":\"ACCESSORIES\",\"id\":1}]","Product_Brand":"[{\"active\":false,\"brand\":\"101 DALMATIANS\",\ "id\":1}]"}。需要删除那些。还有数组列表中的引用。
      • 谢谢@Mickey Patel
      • 嗨@Mickey Patel,您使用的导入是什么-- JSONParser parser = new JSONParser();
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-04
      • 2020-07-13
      • 2018-08-24
      • 1970-01-01
      • 2020-07-14
      • 2021-09-27
      • 1970-01-01
      相关资源
      最近更新 更多