如何解析Angular 2中分隔的json换行符

时间:2017-10-08 00:40:13

标签: json angular aws-sdk

我正在编写一个Angular 2应用程序(使用angular cli构建),并尝试使用AWS Polly文本到语音API。

根据API,您可以请求音频输出以及可以描述单词定时,视位等的“语音标记”。音频以“mp3”格式传送,语音标记为“application / x-json” -stream“,我理解为”新线“分隔JSON。由于新行,无法使用JSON.parse()进行解析。我还无法读取/解析这些数据。我查看过几个用于“json streaming”的库,但它们都是为node.js构建的,不适用于Angular 2.我的代码如下......

onClick() {
AWS.config.region = 'us-west-2';
AWS.config.accessKeyId = 'xxxxx';
AWS.config.secretAccessKey = 'yyyyy';
let polly = new AWS.Polly();

var params = {
  OutputFormat: 'json',
  Text: 'Hello world', 
  VoiceId: 'Joanna',
  SpeechMarkTypes:['viseme']
};

polly.synthesizeSpeech(params, (err, data) => {
  if (err) {
    console.log(err, err.stack);
  } else {
    var uInt8Array = new Uint8Array(data.AudioStream);
    var arrayBuffer = uInt8Array.buffer;
    var blob = new Blob([arrayBuffer]);
    var url = URL.createObjectURL(blob);

   this.audio.src = url;
   this.audio.play(); // works fine

   // speech marks info displays "application/x-json-stream"
   console.log(data.ContentType); 
  }
});

奇怪的是,Chrome浏览器知道如何读取此数据并将其显示在响应中。 enter image description here

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我保存了文件,以便我可以逐行读取它,当我需要突出显示正在读取的单词时访问JSON对象。请注意,这可能不是最有效的方法,但这是一种简单的方法,可以继续前进并开发有趣的东西。

我正在尝试与Polly合作的不同方式,如果我找到更好的方法会更新答案