2016-10-21 6 views
0

Ich habe ein JSON-Daten wie unten:Serialize mit dem gleichen json-Format

{ 
"ResourceStrings": 
    [ 
    { 
     "StringKey": "TestKey", 
     "StringID": 1, 
     "Value": "This translate need to be done123fdff" 
    }, 
    { 
     "StringKey": "SampleKey", 
     "StringID": 2, 
     "Value": "This translate need to be done345fdfd" 
    } 

] 
} 

ich diese Klasse umgewandelt, so unter der erstellten Klasse:

public class ResourceString 
{ 
    public string StringKey { get; set; } 
    public int StringID { get; set; } 
    public string Value { get; set; } 
} 
public class RootObject 
{ 
    public List<ResourceString> ResourceStrings { get; set; } 
} 

Jetzt habe ich einige Daten in xliff Format die ich von diesem Element nehme und wie in der unten stehenden RootObject Aktualisierung:

 XmlDocument docXLIFF = new XmlDocument(); 
    docXLIFF.LoadXml(xliffdata); 
    var jsondata = JsonConvert.DeserializeObject<RootObject>  (sameJsonDataAsAbove); 
    List<ResourceString> rstList = jsondata.ResourceStrings.ToList(); 

    XmlNodeList xmlNodes = docXLIFF.SelectNodes("/xliff/file/body/trans-unit"); 
    foreach (XmlNode node in xmlNodes) 
    { 
     var getTransID = rstList.Where(t => t.StringID.ToString() == node.Attributes["id"].Value).FirstOrDefault(); 
     if (getTransID != null) 
     { 
      var getTargetValue = node.InnerText; 
      getTransID.Value = getTargetValue; 
     } 
    } 

So im obigen Code bin i che Die ID von xliff-Element mit JsonList-ID und die Übereinstimmung ich erhalte den Wert von Element und Einstellung in der Json-Liste. nach dem Abschluss dieser brauche ich die aktualisierte JSON-Liste in der gleichen JSON-Form wie ich oben erwähnt. Aber ich bekomme nur den Inhalt wie folgt:

{ 
     "StringKey": "TestKey", 
     "StringID": 1, 
     "Value": "This translate need to be done123fdff" 
    }, { 
     "StringKey": "SampleKey", 
     "StringID": 2, 
     "Value": "This translate need to be done345fdfd" 
    } 

Wie erreichen Sie die gleiche JSON-Struktur?

+0

Mögliches Duplikat von [Verwandle C# -Objekt in eine JSON-Zeichenfolge in .NET 4] (http://stackoverflow.com/questions/6201529/turn-c-sharp-object-into-a-json-string-in- ne t-4) – Liam

+0

Meine ersten geposteten Json-Daten mit resourcestring. – Vikash

+0

Was? Was bedeutet das? – Liam

Antwort

1

Ich glaube, Sie brauchen :-) die Zeichenfolge in ein Array zu analysieren

Sehen Sie diesen Beitrag für weitere Hilfe:

Parse this json string to string array c#

Edit: leid Liam, hier gehen Sie

//add [] to the string so it's an array! 
var xcliff = " [ { " + 
    "\"StringKey\": \"TestKey\"," + 
    "\"StringID\": 1," + 
    "\"Value\": \"This translate need to be done123fdff\"" + 
"}, {" + 
    "\"StringKey\": \"SampleKey\"," + 
    "\"StringID\": 2," + 
    "\"Value\": \"This translate need to be done345fdfd\"" + 
"}]"; 

var jd = new JavaScriptSerializer().Deserialize<List<ResourceString>>(xcliff); 
var ro = new RootObject { ResourceStrings = jd}; 
+0

Liam Ich habe diesen Code nach dem Beenden von foreach hinzugefügt. Loop var convertToJson = JsonConvert.SerializeObject (rstList); aber ich bekomme den Inhalt nur sollte es auch mit ResourceString-Array kommen. Wie dies – Vikash

+0

ich soll mit aktualisierten Wert zurück { "resource": [ { "StringKey": "TestKey", "stringID": 1, "Wert": "aktualisierten Wert" }, { "StringKey": "SampleKey", "stringID": 2, "Wert": "aktualisierten Wert" } ] } – Vikash

+1

Ja Bert Code wurde direkt nach dem tricky Code ich es serialisiert werden, und es ist funktioniert gut das gleiche ich wollte erreichen, danke noch einmal, ich markiere es als antwort. – Vikash