如何在spring rest api中将字符串转换为json格式

时间:2016-07-14 12:18:22

标签: java json spring mongodb rest

这是代码:

@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”   }   ]

5 个答案:

答案 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(... ... ...) {
    ...