我在Spring有Rest控制器。
控制器:
@RestController
@RequestMapping("/users")
public class Controller {
private UserService userService;
@Autowired
public Controller(UserService userService) {
this.userService = userService;
}
@GetMapping("/all")
public List<User> fethAllUsers() {
return userService.fetchAllUsers();
}
@GetMapping("/{id}")
public User getUser(@PathVariable ObjectId id) {
return userService.fetchUser(id);
}
@PostMapping("/")
public User createUser(@RequestParam String name, @RequestParam String address) {
return userService.createUser(name, address);
}
@DeleteMapping("/{id}")
public void deleteUser(@PathVariable ObjectId id) {
userService.deleteUser(id);
}
}
服务:
@Service
public class UserService {
private UserRepository userRepository;
@Autowired
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public List<User> fetchAllUsers() {
return userRepository.findAll();
}
public User fetchUser(ObjectId id) {
Optional<User> optionalUser = userRepository.findById(id);
return optionalUser.orElseGet(optionalUser::get);
}
public User createUser(String name, String address) {
User user = new User();
user.setId(ObjectId.get());
user.setName(name);
user.setAddress(address);
return userRepository.save(user);
}
public void deleteUser(ObjectId id) {
userRepository.deleteById(id);
}
}
存储库:
@Repository
public interface UserRepository extends MongoRepository<User, ObjectId> {
}
实体:
import lombok.Data;
import org.bson.types.ObjectId;
@Data
public class User {
private ObjectId id;
private String name;
private String address;
}
目前当我在Postman(或浏览器)中使用方法@GetMap在获得JSON对象响应:
[
{
"id": {
"timestamp": 1569940881,
"machineIdentifier": 9478066,
"processIdentifier": 10308,
"counter": 14051396,
"time": 1569940881000,
"date": "2019-10-01T14:41:21.000+0000",
"timeSecond": 1569940881
},
"name": "testName",
"address": "testAddress"
}
]
作为回应,我需要字符串格式的字段“id”,看起来像:
[
{
"id": "5d936591909fb22844d66844",
"name": "testName",
"address": "testAddress"
}
]
如何以字符串格式将JSON对象fielt“id”作为ObjectId返回?
我有一个非常简单的解决方案:
@JsonSerialize(using= ToStringSerializer.class)
private ObjectId id;
...
把它放在Object Id属性上,ObjectId像string一样获取和插入
这是我的答案
让我们看看下面这个简单的测试控制器(与Spring 4.0.3一起使用): 理论上,两个控制器方法都应该返回有效的JSON。调用第一个controller方法确实会返回以下JSON数组: 但第二个controller方法返回不带引号的字符串,该字符串不是有效的JSON字符串: 为什么会这样?可以配置吗?是虫子吗?还是一个我不懂的特征?
我的问题实质上是对这个问题的跟进。 在上面,Spring会将“hello world”添加到响应体中。如何将字符串作为JSON响应返回?我知道我可以加引号,但这感觉更像是一个黑客。 请提供任何例子来帮助解释这一概念。 注意:我不想直接写到HTTP响应体,我想返回JSON格式的字符串(我正在使用带有RestyGWT的控制器,它要求响应是有效的JSON格式)。
我试着像FOSRestBundleByExample/blob那样做。 我的行动: 不过,我有以下回应: 控制器必须返回一个响应(给定对象(FOS\RestBundle\View\View))。 我发现我可以在配置中将view\u response\u listener更改为true,但我有: 无法找到模板""。 有什么想法吗? 谢谢你,卡米尔
但是,当我返回列表时,就像这段代码: 对于完全相同的API的列表返回类型的响应是正确的响应: [{“SellingPrice”:23000,“ID”:1,“Version”:1,“CreatedOn”:“25Feb 2019,05:53”,“LastUpdatedOn”:“25Feb 2019,05:53”}]
问题内容: 我需要实现一个调用Web服务并返回响应的函数。 我试过了 在调用 Web服务时,将成功调用。但是在接收到响应之前返回。因此,我正在获取重调谐器值“ initial_value”。函数 如何从响应中返回值? 问题答案: GWT不支持同步Ajax,因此您必须使用异步模式对应用程序进行编码。 GWT用于执行请求的低级对象是XMLHttpRequest(旧的IE版本除外),并且GWT总是在as
我刚刚开始使用Spring,希望有知识渊博的人可以帮助我。我有一个使用SpringRest数据的SpringRest存储库。我正在尝试解决如何执行以下操作。 > 公共接口ReadOnlyRepository扩展存储库{T findOne(ID id); } 公共接口ContentRepository扩展了ReadOnlyRepository } //我需要用“...”动态替换的字段@实体公共类内容