gpt4 book ai didi

dart - 用dart解码JSON

转载 作者:行者123 更新时间:2023-12-03 04:55:27 27 4
gpt4 key购买 nike

我有一个正在运行的简单的dart文件:

import 'dart:convert';

// ...

dynamic test() {
final strJson = '{"ACB":["{\"date\":\"2020-02-28\",\"open\":1.36,\"close\":1.34,\"high\":1.4,\"low\":1.32,\"volume\":26469238}","{\"date\":\"2020-03-12\",\"open\":47.99,\"close\":45.54,\"high\":50.09,\"low\":45.37,\"volume\":50661745}"]}';
final parsedJson = json.decode(strJson);
print('${parsedJson.runtimeType} : $parsedJson');
}

main() {
test();
}

但是得到这个奇怪的异常:
Unhandled exception:
FormatException: Unexpected character (at character 12)
{"ACB":["{"date":"2020-02-28","open":1.36,"close":1.34,"high":1.4,"low":1.3...
^

#0 _ChunkedJsonParser.fail (dart:convert-patch/convert_patch.dart:1394:5)
#1 _ChunkedJsonParser.parse (dart:convert-patch/convert_patch.dart:924:48)
#2 _parseJson (dart:convert-patch/convert_patch.dart:31:10)
#3 JsonDecoder.convert (dart:convert/json.dart:495:36)
#4 JsonCodec.decode (dart:convert/json.dart:153:41)
#5 test (file:///home/val/src/labs/maingain/test.dart:60:27)
#6 main (file:///home/val/src/labs/maingain/test.dart:65:3)
#7 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:307:19)
#8 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:174:12)

我只是说,从Flutter运行类似的代码似乎很好。仅当从命令行运行时,才给我以上内容。

还经过验证的JSON。

最佳答案

r放在字符串文字的前面。
'{"ACB":["{\"date\":....'是普通的单引号Dart字符串文字。这意味着反斜杠是字符串转义符,因此\"仅将"添加到字符串值。
这不是必需的转义,因为字符串使用单引号,但是仍将其视为转义。

这意味着您将字符串内容{"ACB":["{"date":...传递给JSON解码器,由于该代码无效JSON,该解码器会立即放弃。

如果将r放在字符串前面:r'{"ACB":["{\"date\":...',则字符串文字将变为原始字符串。这意味着反斜杠不能用作转义符,而是像文字字符一样对待。这使得结果字符串有效为JSON。

另一种选择是将每个反斜杠更改为两个:'{"ACB":["{\\"date\\":...'

关于dart - 用dart解码JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60696272/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com