Dart解码转义的JSON

时间:2018-12-24 15:52:56

标签: json dart

我正在尝试从<div> <h3><?php _e( '2018', 'template' ); ?></h3> <ul> <?php $archive_posts = get_posts( array( 'post_status'=> 'publish', 'year' => '2018', ) ); foreach ( $archive_posts as $archive_post ) : $post_link = get_post_meta( $archive_post->ID, 'news_link', true); $post_title = get_post_meta( $archive_post->ID, 'title', true); $post_author = get_post_meta( $archive_post->ID, 'authors', true); $post_publisher = get_post_meta( $archive_post->ID, 'publisher', true); $post_date = get_post_meta( $archive_post->ID, 'date', true); $new_date = date("m/d/Y", strtotime($post_date)); ?> <li> <strong><a href="<?php echo $post_link ?>"> <?php echo $post_title ?> </a></strong> - <?php echo "$post_author ," ?> <?php echo $post_publisher ?> ( <?php echo $new_date ?>) </li> <?php endforeach; ?> 反序列化一个简单的JSON对象。
由于数据代表用户的引号,因此该API以转义的引号返回API

JSON

但是抛出:

  

FormatException:意外字符(在字符13处)
  test("escaped quoted json test", () { var s = '''{"quote": "\"a quote from a user\""}'''; var b = json.decode(s); expect(b["quote"], "\"a quote from a user\""); });

该JSON有效:

{"quote": ""a quote from a user""}

enter image description here

我如何告诉{"quote": "\"a quote from a user\""} 正确处理此问题?

谢谢。

1 个答案:

答案 0 :(得分:1)

内部引号需要使用文字反斜杠而不是转义的反斜杠转义

var s = '''{"quote": "\\"a quote from a user\\""}''';

var s = r'''{"quote": "\"a quote from a user\""}''';

用Dart源代码编写的JSON与通过网络接收的JSON之间是有区别的。
如果将其放在问题中的源代码中,则会解释该字符串。您可以修改字符串(将所有\都加倍),也可以在原始字符串前加上r作为前缀。