发布一个列表并使用Dart迭代它

时间:2014-09-29 18:19:18

标签: json mongodb dart

我正在尝试将dart项目中的一些数据发布到另一个项目并将它们存储在mongoDB中

邮政编码:

import 'dart:io';

void main() {

    List example = [
        {"source": "today", "target": "tomorrow"},
        {"source": "yesterday", "target": "tomorrow"},
        {"source": "today", "target": "yesterday"}     
    ];

    new HttpClient().post('localhost', 4040, '')
    .then((HttpClientRequest request) {
            request.headers.contentType = ContentType.JSON;
            request.write(example);
            return request.close();
    });
}

在另一个文件中接收它的代码

void start() {    
    HttpServer.bind(address, port)
        .then((HttpServer server) {
            // Log in console to show that server is listening
            print('Server listening on ${address}:${server.port}');
            server.listen((HttpRequest request) {
                request.transform(UTF8.decoder).listen(sendToDatastore);
        });        
    });
}

void sendToDatastore(String contents) {
    var dbproxy = new dbProxy("myDb");
    dbproxy.write("rawdata", contents);
    index++;

    // non related to the problem code
}

bool write(collectionName, document)
{
    Db connection = connect();        
    DbCollection collection = connection.collection(collectionName);

    connection.open().then((_){
        print('writing $document to db');
        collection.insert(document);
    }).then((_) {
        print('closing db');
        connection.close();
    });        
    return true;        
}  

我正在努力的是我正在使用

request.transform(UTF8.decoder).listen(sendToDatastore);

所以我将请求流转换为字符串,因为我找不到将其作为Json发送的方式。

然后在sendToDatastore中,我无法正确解析它以便存储它。据我了解,我需要将每个Json对象作为Map来存储它,因为我收到此错误

Uncaught Error: type 'String' is not a subtype of type 'Map' of 'document'.

谢谢,

更新

如果我尝试在sendToDatastore中执行类似的操作

    void sendToDatastore(String contents) {
    var dbproxy = new dbProxy("myDb");
    var contentToPass = JSON.decode(contents);
    contentToPass.forEach((element) => dbproxy.write("rawdata", element));
    index++;

    // non related to the problem code
}

它引发了这个错误

Uncaught Error: FormatException: Unexpected character (at character 3)
[{source: today, target: tomorrow}, {source: yesterday, target: tomorrow}, ...
  ^

使用JSON.decode

UPDATE2

错误是我没有从“邮政编码”发送实际的Json。我用了

// ...
request.write(JSON.encode(example));
// ...

一切正常

由于

1 个答案:

答案 0 :(得分:1)

您应该可以使用dart:convert包。

然后您可以使用:

String str = JSON.encode(obj)

var obj = JSON.decode(str)

转换字符串/ json。