Dart:将所有带引号的元素转换为JSON


问题内容

我将Dart中的表单序列化为JSON,然后使用Jackson将其反序列化到JSON,然后将其发布到Spring MVC后端。

在dart中,如果我打印出JSON,则会得到:

{firstName: piet, lastName: venter}

Jackson不喜欢这种格式的数据,它返回状态400,并且 The request sent by the client was syntactically incorrect.

如果我在所有字段周围都加引号,则Jackson会接受数据,并且会得到答复。

{"firstName": "piet", "lastName": "venter"}

在dart中,我在Map<String, String> data = {};所有表单字段中构建了一个then循环,然后执行data.putIfAbsent(input.name, () => input.value);

现在,当我调用时data.toString(),我得到了我认为是无效JSON的未引用的JSON。

如果我import 'dart:convert' show JSON;尝试JSON.encode(data).toString();使用相同的未引用JSON。

手动附加双引号似乎有效:

data.putIfAbsent("\"" + input.name + "\"", () => "\"" + input.value + "\"");

在Java方面,没有火箭科学:

@Controller
@RequestMapping("/seller")
@JsonIgnoreProperties(ignoreUnknown = true)
public class SellerController {

    @ResponseBody
    @RequestMapping(value = "/create", method = RequestMethod.POST, headers = {"Content-Type=application/json"})
    public Seller createSeller(@RequestBody Seller sellerRequest){

所以我的问题是,在Dart中,Jackson期望的构建加引号的JSON(除了手动转义加引号和手动添加引号之外)的方法不是那么简单吗?可以将Jackson配置为允许使用不带引号的JSON吗?


问题答案:
import 'dart:convert';
...
json.encode(data); // JSON.encode(data) in Dart 1.x

总是导致我引用JSON。
你不需要打电话toString()