从API结果中解析JSON

问题描述 投票:0回答:1

我正在使用RUST和Reqwest从API调用以下响应:

Shell:

Ok("{\"SETTLEMENTDATE\":\"2019-10-24T12:50:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":68.0464}\n"{\"SETTLEMENTDATE\":\"2019-10-24T12:55:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":67.4408}\n
{\"SETTLEMENTDATE\":\"2019-10-24T13:00:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":87.2918}\n
{\"SETTLEMENTDATE\":\"2019-10-24T13:05:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":98.1406}\n
{\"SETTLEMENTDATE\":\"2019-10-24T13:10:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":87.4789}\n
{\"SETTLEMENTDATE\":\"2019-10-24T13:15:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":90.2434}\n
{\"SETTLEMENTDATE\":\"2019-10-24T13:20:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":89.8617}\n
{\"SETTLEMENTDATE\":\"2019-10-24T13:25:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":97.2639}\n
{\"SETTLEMENTDATE\":\"2019-10-24T13:30:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":100.493}\n
{\"SETTLEMENTDATE\":\"2019-10-24T13:35:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":93.7984}\n
{\"SETTLEMENTDATE\":\"2019-10-24T13:40:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":85.1182}\n
{\"SETTLEMENTDATE\":\"2019-10-24T13:45:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":91.4173}\n\n",
)

我想解析此输出,仅在我从调用中接收到的第一个数组(下面的BOLD中的图)中打印“ RRP.DISPATCHPRICE0”值:

确定(“ {\” SETTLEMENTDATE \“:\” 2019-10-24T12:50:00Z \“,\” REGIONID \“:\” VIC1 \“,\” RRP.DISPATCHPRICE0 \“:68.0464] >} \ n“...

我对RUST还是很陌生,并试图找出如何最好地实现这一目标。社区中的任何人都可以提供一些建议/帮助吗?

我尝试了什么:

我一直在使用以下代码:

extern crate serde_json;

use serde_json::Value;

fn main() {
    let data: Value = serde_json::from_str(
//          Ok(
           "{\"SETTLEMENTDATE\":\"2019-10-24T12:50:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":68.0464}\n"
//           {\"SETTLEMENTDATE\":\"2019-10-24T12:55:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":67.4408}\n
//            {\"SETTLEMENTDATE\":\"2019-10-24T13:00:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":87.2918}\n
//            {\"SETTLEMENTDATE\":\"2019-10-24T13:05:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":98.1406}\n
//            {\"SETTLEMENTDATE\":\"2019-10-24T13:10:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":87.4789}\n
//            {\"SETTLEMENTDATE\":\"2019-10-24T13:15:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":90.2434}\n
//            {\"SETTLEMENTDATE\":\"2019-10-24T13:20:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":89.8617}\n
//            {\"SETTLEMENTDATE\":\"2019-10-24T13:25:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":97.2639}\n
//            {\"SETTLEMENTDATE\":\"2019-10-24T13:30:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":100.493}\n
//            {\"SETTLEMENTDATE\":\"2019-10-24T13:35:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":93.7984}\n
//            {\"SETTLEMENTDATE\":\"2019-10-24T13:40:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":85.1182}\n
//            {\"SETTLEMENTDATE\":\"2019-10-24T13:45:00Z\",\"REGIONID\":\"VIC1\",\"RRP.DISPATCHPRICE0\":91.4173}\n\n",
//            )
    )
    .unwrap();



    println!("data: {:?}", data);
    let obj = data.as_object().unwrap();
    let RRP = obj.get("RRP.DISPATCHPRICE0").unwrap();

    println!("Value: {}", RRP);
}

以上打印出了我想要的数字,并且效果很好,但是当我在“响应”的其余部分中进行注释时,我无法使其正常工作。

请帮助! :)

我正在使用RUST和Reqwest从API调用以下响应:Shell:Ok(“ {\” SETTLEMENTDATE \“:\” 2019-10-24T12:50:00Z \“,\” REGIONID \: \“ VIC1 \”,\“ RRP.DISPATCHPRICE0 \”:68.0464} \ n“ {\” ...

json parsing rust serde-json
1个回答
0
投票

您的字符串整体上不是有效的JSON,因为它包含多个对象。您可以使用StreamDeserializer逐个提取对象来解决它:

© www.soinside.com 2019 - 2024. All rights reserved.