flutter Dart将不带引号的字符串转换为JSON

ppcbkaq5  于 2023-04-13  发布在  Flutter
关注(0)|答案(3)|浏览(342)

我正在尝试将字符串转换为JSON字符串。
我得到的字符串:

String myJSON =  '{codigo: 1050, decricao: Mage x, qntd: 1, tipo: UN, vUnit: 10,9, vTotal: 10,90}';

我需要的字符串:

String myJSON =  '{"codigo": "1050", "decricao": "Mage x", "qntd": "1", "tipo": "UN", "vUnit": "10,9", "vTotal": "10,90"}';

有人能告诉我如何添加引号吗?

rlcwz9us

rlcwz9us1#

您可以使用replaceAll轻松转换String。
验证码:

String myJSON =  '{codigo: 1050, decricao: Mage x, qntd: 1, tipo: UN, vUnit: 10,9, vTotal: 10,90}';
  myJSON = myJSON.replaceAll('{', '{"');
  myJSON = myJSON.replaceAll(': ', '": "');
  myJSON = myJSON.replaceAll(', ', '", "');
  myJSON = myJSON.replaceAll('}', '"}');
  print(myJSON);

输出:

{"codigo": "1050", "decricao": "Mage x", "qntd": "1", "tipo": "UN", "vUnit": "10,9", "vTotal": "10,90"}
vu8f3i0k

vu8f3i0k2#

使用json编码转换

import 'dart:convert';
    const JsonEncoder encoder = JsonEncoder.withIndent('  ');
    String myJSON =  '{codigo: 1050, decricao: Mage x, qntd: 1, tipo: UN, vUnit: 10,9, vTotal: 10,90}';
    String str = encoder.convert(myJSON);
f87krz0w

f87krz0w3#

我调整了Maciej Szakacz的答案,使其适用于我的用例,即嵌套的json。我将提供以下代码:

String jsonAddQuotes(String json){
  json = json.replaceAll('{', '{"');
  json = json.replaceAll(': ', '": "');
  json = json.replaceAll(', ', '", "');
  json = json.replaceAll('}', '"}');
  
  json = json.replaceAll('"{', '{');
  json = json.replaceAll('}"', '}');
  return json;
}

正如他的回答所评论的那样,如果你在json值中使用:{},,这将不起作用。

相关问题