json - 读入json文件,写入不缩进

标签 json file rust rust-cargo

以下代码打开一个 json 文件文件夹(使用缩进保存),获取内容并序列化为 json 并写入一个新文件。 python 中的相同代码任务有效,所以它不是数据。但是你在这里看到的 Rust 版本:

extern crate rustc_serialize;
use rustc_serialize::json;
use std::io::Read;
use std::fs::read_dir;
use std::fs::File;
use std::io::Write;
use std::io;
use std::str;


fn write_data(filepath: &str, data: json::Json) -> io::Result<()> {

    let mut ofile = try!(File::create(filepath));
    let encoded: String = json::encode(&data).unwrap();
    try!(ofile.write(encoded.as_bytes()));
    Ok(())
}


fn main() {

    let root = "/Users/bling/github/data/".to_string();
    let folder_path = root + &"texts";
    let paths = read_dir(folder_path).unwrap();

    for path in paths {
        let input_filename = format!("{}", path.unwrap().path().display());
        let output_filename = str::replace(&input_filename, "texts", "texts2");

        let mut data = String::new();
        let mut f = File::open(input_filename).unwrap();
        f.read_to_string(&mut data).unwrap();
        let json = json::Json::from_str(&data).unwrap();

        write_data(&output_filename, json).unwrap();
    }
}

您是否已经在我的代码中发现了一个错误,或者我是否弄错了一些语言概念。 rustc-serialize cargo 是不是用错了。最后它没有像预期的那样工作 - 胜过 python。

± % cargo run --release --verbose                                                                                                                                            
       Fresh rustc-serialize v0.3.16
       Fresh fileprocessing v0.1.0 (file:///Users/bling/github/rust/fileprocessing)
     Running `target/release/fileprocessing`
thread '<main>' panicked at 'called `Result::unwrap()` on an `Err` value: SyntaxError("unescaped control character in string", 759, 55)', ../src/libcore/result.rs:736
Process didn't exit successfully: `target/release/fileprocessing` (exit code: 101)

为什么会报错是我序列化json做错了?
我可以获得失败的对象吗?编码呢?

...代码是正确的还是有一些明显的错误需要更多的经验?

最佳答案

大胆猜测:如果相同的输入文件可以被其他 JSON 解析器解析(例如在 Python 中),您可能遇到了 rustc-serialize 错误,该错误已在 https://github.com/rust-lang-nursery/rustc-serialize/pull/142 中修复。 .尝试更新?

关于json - 读入json文件,写入不缩进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33555327/

相关文章:

json - 如何将 JSON 字符串转换为字典?

android - 如何以编程方式将文件从内部存储器 move 到 android 中的 sdcard?

c# - 不断将数据写入文件

concurrency - 在多个线程之间共享可变自身

rust - 生成 mio Token 时需要注意哪些限制?

if-statement - 在折叠内部使用 if

javascript - ASP.NET 中从 JSON 返回的未定义数据

python - 我正在尝试发送 HTTP 帖子,但 json 返回 "message":"Unauthorized"

mysql - 将属性附加到 MySQL 中的 JSON 对象

java - 如何从java中的文本文件中获取行数?