2017-08-10 4 views
0

Voici un code simple qui désérialise un fichier .json, puis le sérialise à nouveau, sans modifier les données.JsonSerializer ne sérialise pas toutes les données

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); 

Tout semble être désérialisé très bien que le json jobject contient toutes les données, mais étrangement pas tout est publié en feuilleton.

Si cela est 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":[] 
} 

Alors fileOut.json ressemblera à ceci:

{ 
    "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 

Comme vous pouvez le voir le fichier de sortie est des données manquantes vers la fin. Pourquoi cela se passe-t-il et comment puis-je le réparer? Merci

Répondre

1

Vous ne fermez pas votre fichier de sortie (nouveau StreamWriter (« fileOut.json », false), c'est la raison pour laquelle vous ne voyez pas le fichier entier ...

Une façon plus simple pour écrire en retrait json dans le fichier serait

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

Merci! De cette façon est plus simple. – CasualKyle