这是代码:
@RequestMapping(value="/find/city={city}", method=RequestMethod.GET)
public @ResponseBody String getCity(@PathVariable String city) throws JsonParseException, IOException
{
ObjectMapper mapper = new ObjectMapper();
SimpleBeanPropertyFilter theFilter = SimpleBeanPropertyFilter.serializeAllExcept("id","miscellaneous","country","foundin","code","latlong","state");
FilterProvider filters = new SimpleFilterProvider().addFilter("myFilter", theFilter);
String content = "";
StringBuilder builder = new StringBuilder();
List<Master_City> list = City_Repository.findByCityLikeIgnoreCase(city);
for (Master_City json : list)
{
builder.append( mapper.writer(filters).writeValueAsString(json));
}
content = builder.toString();
return content;
}
输出不在json中,它是一个字符串:
{"indexid":65,"city":"Barcelona"}{"indexid":158,"city":"Dillons Bay"} {"indexid":232,"city":"East London"}{"indexid":411,"city":"Londonderry"{"indexid":587,"city":"Thessaloniki"}{"indexid":818,"city":"Bouillon"}{"indexid":1719,"city":"Flin Flon"}{"indexid":2073,"city":"Clonmel"}
我需要这种格式:
[ { “indexid”:“425”, “城市”:“Flin Flon” }, { “indexid”:“220”, “城市”:“伦敦” }, { “indexid”:“525”, “城市”:“Longyear” } ]
答案 0 :(得分:1)
我需要json格式。
简短回答:Json格式 IS STRING。
长篇(来自wikipedia的解释)
(JSON)是一种开放标准格式,它使用人类可读的文本来传输由属性 - 值对组成的数据对象。它是用于异步浏览器/服务器通信的最常见数据格式.....
正如您所看到的,您获得的String具有正确的attribte-value对格式,因此您可以将其返回给java对象,或者您可以存储在纯文本文件中以在需要时获取原始java对象
我需要这种格式: [{&#34; indexid&#34;:&#34; 425&#34;,&#34; city&#34;:&#34; Flin Flon&#34; },{&#34; indexid&#34;:&#34; 220&#34;,&#34; city&#34;:&#34; London&#34; },{&#34; indexid&#34;:&#34; 525&#34;,&#34; city&#34;:&#34; Longyear&#34; }]
如果你需要的是引用数字,只需将类型改为String,你就会得到实际的格式,因为id是一种数字格式,因此不需要引号。
答案 1 :(得分:0)
你要做的是一个json数组,你可以使用 Gson 库将一个对象转换为json。
试试这个:
Gson gson = new Gson();
content = gson.toJson(list); //your list of Master_City
你的结果:
[{&#34; IndexID为&#34;:65,&#34;城市&#34;:&#34;巴塞罗那&#34;},{&#34; IndexID为&#34;:158,&#34 ;城市&#34;:&#34; Dillons Bay&#34;},{&#34; indexid&#34;:232,&#34; city&#34;:&#34;东伦敦&#34;},{ &#34; IndexID为&#34;:411,&#34;城市&#34;:&#34;伦敦德里&#34;},{&#34; IndexID为&#34; 587&#34;城市&#34; :&#34;塞萨洛尼基&#34;},{&#34; IndexID为&#34;:818,&#34;城市&#34;:&#34;肉汤&#34;},{&#34; IndexID为&#34 ;:1719,&#34; city&#34;:&#34; Flin Flon&#34;},{&#34; indexid&#34;:2073,&#34; city&#34;:&#34; Clonmel& #34;}]
依赖性:
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.7</version>
</dependency>
答案 2 :(得分:0)
在http请求中你必须使用Content-Type =“application / json”设置标题然后它将以json格式给出响应
答案 3 :(得分:0)
您可以使用Spring boot JSONObject
示例:
字符串内容=“ {” id“:1,”名称“:” ram“}”; JSONObject jsonObject =新的JSONObject(content);
之后,您可以从spring控制器返回jsonObject。
依赖性:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>2.0.1.RELEASE</version>
答案 4 :(得分:0)
将此添加到您的控制器方法中:
import org.springframework.http.MediaType;
@GetMapping(
value = "/yourMapping",
produces = MediaType.APPLICATION_JSON_VALUE
)
public String yourControllerMethod(... ... ...) {
...