【问题标题】:How can I convert ArrayList/Set to JSON and post data using postforobject method?如何将 ArrayList/Set 转换为 JSON 并使用 postforobject 方法发布数据?
【发布时间】:2020-04-30 19:49:27
【问题描述】:

我已经设置了包含字符串 ["a" , "b" , "c"] ,我想要 POST json 数据,例如(逗号分隔和一个字符串) 这里是

JSON

{"view" : "a,b,c",
"fruits" : "apple"}

使用 Resttemplate postForObject 方法到终点?我使用了GSON,但这在我的项目中不起作用。还有其他选择吗?

这是我的代码

    private run(set<data> datas) {
            Set<string> stack = new hashset<>();
            iterator<data> itr = datas.iterator();
            while (itr.hasnext()) {
                data macro = itr.next();

                if (//some condition) {
                    stack.add(macro);

                        }
                    }
                }
            }
            Resttemplate.getmessageconverters().add(stringconvertor);
            String result = resttemplate.postforobject(endpoint, request, String.class);
}

【问题讨论】:

  • 错误是什么?
  • 没有错误,我在JSON数据中转换上面的Set并传递它有困难
  • 实现此目的的一种方法是创建一个 POJO,然后当此 POJO 类的对象作为对请求的响应传递时,Spring-Boot 会自动将其转换为 JSON 格式。
  • 那么,你想将 set ["a" , "b" , "c"] 转换为 json {"view" : "a,b,c"} 并在请求中传递它?
  • 在您的代码中,您想将什么输出为 JSON 对象?不是很清楚。

标签: java json spring-boot arraylist resttemplate


【解决方案1】:

如果数据采用特定类(如格式),您可以使用 Spring Boot 鼓励的 POJO 方法。但是看看您的示例,您似乎想要实现一次性 JSON 对象响应。

import org.json.simple.JSONObject;    

public static void run(set<data> datas, string endpoint){    
  // build your 'stack' set
  String joined = String.join(",", stack);
  JSONObject obj=new JSONObject();    
  obj.put("view",joined);    
  obj.put("fruits","apple");    
  //return the jsonObject as the response to your entrypoint using your method     
}    

如果您在 Spring Boot 中使用 @ResponseBody 注释将响应正文转换为适当的 (JSON) 格式,您也可以尝试以下操作。

    HashMap<String, String> map = new HashMap<>();
    map.put("view", joined);
    map.put("fruits", "apple");
    return map;

【讨论】:

  • HttpEntity request = new HttpEntity(obj, headers);它在上面的行给出以下错误 - error: incompatible types: cannot infer type arguments for HttpEntity&lt;&gt; HttpEntity &lt;String&gt; request = new HttpEntity&lt;&gt;(obj, headers); ^ reason: inference variable T has incompatible bounds equality constraints: String lower bounds: JSONObject where T is a type-variable: T extends Object declared in class HttpEntity 有什么建议吗?
  • HttpEntity&lt;String&gt; request = new HttpEntity&lt;String&gt;(obj.toString(), headers); String personResultAsJsonStr = restTemplate.postForObject(url, request, String.class);
猜你喜欢
  • 1970-01-01
  • 2018-02-04
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 2020-03-08
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多