2017-08-10 38 views
0

下面是一些简单的代码,它可以将.json文件反序列化,然后再次序列化它,不会对数据进行任何更改。JsonSerializer没有序列化所有数据

JObject json = JObject.Parse(File.ReadAllText("fileIn.json")); 
JsonWriter writer = new JsonTextWriter(new StreamWriter("fileOut.json", false)); 
writer.Formatting = Formatting.Indented; 
JsonSerializer serializer = new JsonSerializer(); 
serializer.Serialize(writer, json); 

似乎一切都反序列化就好作为json JObject包含了所有的数据,但奇怪的是不是一切都被序列化。

如果这是fileIn.json

{ 
    "metadata":{ 
     "vertices":56 
    }, 
    "influencesPerVertex":2, 
    "bones":[{ 
     "parent":-1, 
     "name":"torso", 
     "scl":[1,1,1], 
     "pos":[-2.42144e-08,0.720174,-0.00499988], 
     "rotq":[0.707107,0,-0,0.707107] 
    },{ 
     "parent":0, 
     "name":"head", 
     "scl":[1,1,1], 
     "pos":[0,0,-0.904725], 
     "rotq":[0,0,-0,1] 
    },{ 
     "parent":0, 
     "name":"leftLeg", 
     "scl":[1,1,1], 
     "pos":[0.173333,-4.05163e-05,-0], 
     "rotq":[1,-4.37114e-08,-0,0] 
    }], 
    "skinIndices":[1,2,3], 
    "vertices":[1,2,3], 
    "skinWeights":[1,2,3], 
    "faces":[1,2,3], 
    "normals":[1,2,3], 
    "uvs":[] 
} 

然后fileOut.json将这个样子:

{ 
    "metadata": { 
    "vertices": 56 
    }, 
    "influencesPerVertex": 2, 
    "bones": [ 
    { 
     "parent": -1, 
     "name": "torso", 
     "scl": [ 
     1, 
     1, 
     1 
     ], 
     "pos": [ 
     -2.42144E-08, 
     0.720174, 
     -0.00499988 
     ], 
     "rotq": [ 
     0.707107, 
     0, 
     0, 
     0.707107 
     ] 
    }, 
    { 
     "parent": 0, 
     "name": "head", 
     "scl": [ 
     1, 
     1, 
     1 
     ], 
     "pos": [ 
     0, 
     0, 
     -0.904725 
     ], 
     "rotq": [ 
     0, 
     0, 
     0, 
     1 
     ] 
    }, 
    { 
     "parent": 0, 
     "name": "leftLeg", 
     "scl": [ 
     1, 
     1, 
     1 
     ], 
     "pos": [ 
     0.173333, 
     -4.05163E-05, 
     0 
     ], 
     "rotq": [ 
     1, 
     -4.37114E-08, 
     0, 
     0 
     ] 
    } 
    ], 
    "skinIndices": [ 
    1, 
    2, 
    3 
    ], 
    "vertices": [ 
    1, 
    2, 
    3 

正如你可以看到输出文件丢失数据接近尾声。为什么会发生这种情况,我该如何解决?由于

回答

1

你不闭上你的输出文件(新的StreamWriter(“fileOut.json”,假),这就是为什么你没有看到整个文件...

为更简单的方法写缩进json回档案将是

JObject json = JObject.Parse(File.ReadAllText("fileIn.json")); 
File.WriteAllText("fileOut.json", json.ToString(Newtonsoft.Json.Formatting.Indented)); 
+0

谢谢!这种方式更简单。 – CasualKyle

相关问题