programing

Dart: 모든 요소가 인용된 맵을 JSON으로 변환

i4 2023. 3. 12. 10:25
반응형

Dart: 모든 요소가 인용된 맵을 JSON으로 변환

다트에서 JSON으로 폼을 시리얼화한 후 잭슨을 사용하여 스프링 MVC 백엔드에 게시하고 JSON을 시리얼 해제하려고 합니다.

다트에서 JSON을 출력하면 다음과 같은 결과가 나옵니다.

{firstName: piet, lastName: venter}

잭슨은 이 형식의 데이터가 마음에 들지 않습니다.상태 400이 반환되고The request sent by the client was syntactically incorrect.

모든 필드에 따옴표를 붙이면 잭슨이 데이터를 수락하고 답변을 받습니다.

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

다트에서는, 내가 조립한다.Map<String, String> data = {};모든 양식 필드를 루프하여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 + "\"");

자바 쪽에는 로켓 과학이 없습니다.

@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){

그래서 제 질문은 잭슨이 기대하는 인용된 JSON(수동으로 인용을 회피하고 인용을 수동으로 추가하는 것 말고)을 Dart에서 덜 진부한 방법이 있을까요?따옴표 없이 JSON을 허용하도록 잭슨을 설정할 수 있습니까?

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

항상 JSON을 인용하는 결과를 낳았습니다.
전화 안 해도 돼toString()

간단한 방법

import 'dart:convert';
Map<String, dynamic> jsonData = {"name":"vishwajit"};
print(JsonEncoder().convert(jsonData));

언급URL : https://stackoverflow.com/questions/29294019/dart-convert-map-to-json-with-all-elements-quoted

반응형