我正在尝试将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));
// ...
一切正常
由于
答案 0 :(得分:1)
您应该可以使用dart:convert
包。
然后您可以使用:
String str = JSON.encode(obj)
和
var obj = JSON.decode(str)
转换字符串/ json。