Ändern Sie einen JSON-string

Ich habe einen string im JSON-format wie folgt

string jsonStr = "{"Type":1, "Id":1000,"Date":null,"Group": "Admin","Country":"India","Type":1}";

Möchte ich ändern Sie diese Zeichenfolge so, dass Id-Attribut sollte immer der erste. Die Reihenfolge der Attribute ankommt.
Gibt es eine Möglichkeit, ich kann, ändern Sie diese Zeichenfolge.

Ich habe versucht, google-Suche, aber nicht finden die passenden Lösung.
Jede Hilfe würde geschätzt werden.

EDIT:

Ich habe auch versucht zu Deserialisieren Objekt mit

 object yourOjbect = new JavaScriptSerializer().DeserializeObject(jsonStr);

Aber auch hier ist die „type“ – Attribut zuerst kommt. Ich dont finden keine Möglichkeit zum verschieben der Attribute in dieser deserialisierten Objekt

  • „Die Reihenfolge der Attribute wichtig ist.“ Nicht in JSON, gibt es nicht. „Ein Objekt ist ein unordered Satz von name/Wert-Paaren.“ – json.org (mein Wert)
  • Ja, Sie sind richtig. Aber der string will ich sein sollte-in dieser Reihenfolge-nur, als ich den Vergleich mit einem anderen string.
  • Sie benötigen für den Vergleich von zwei json-Objekte?
  • Nein, ich möchte zwei strings vergleichen
  • Warum willst du compar Zeichenfolgen anstelle von Objekten?
  • Ich habe einige string-Werte in der Datenbank(in JSON format), wo das Id-Attribut ist die erste. Nun habe ich einen neuen string jsonStr, wo type-Attribut der ersten ein. Wenn ich Vergleiche jsonStr mit string in der Datenbank, gibt Sie false zurück (offensichtlich). Um es zu bekommen true zurückgeben, ich will es ändern, also sollte es mit dem in der Datenbank.
  • Wenn Sie nicht wollen, zu Parsen und konvertieren von json-json-Objekt, diese Frage ist nicht eine json-ähnlichen Frage mehr. Sie wollen einfach nur zum vergleichen von zwei strings.
  • Sie können Json.NET konvertieren Sie es in ein echtes Objekt und verwenden Sie eine überschreiben-Equals zu vergleichen.

InformationsquelleAutor Microsoft DN | 2016-05-03



3 Replies
  1. 0

    Anstatt zu versuchen zu manipulieren, die Reihenfolge der ausgegeben JSON und vergleichen von Zeichenfolgen, die ich verändern würde, sowohl JSON-strings, die Sie vergleichen möchten, in die Objekte und führen Sie Ihren Vergleich. Sie könnten dann vergleichen Sie die einzelnen Eigenschaften oder ganze Objekte wie so etwas wie die folgenden:

    void CompareJSON()
    {
        string json = @"{""Type"":1, ""Id"":1000,""Date"":null,""Group"": ""Admin"",""Country"":""India"",""Type"":1}";
        string jsonToCompare = "JSON TO COMPARE";
    
        MyObject myJsonObject = JsonConvert.DeserializeObject<MyObject>(json);
        MyObject myJsonObjectToCompare = JsonConvert.DeserializeObject<MyObject>(jsonToCompare);
    
        if (myJsonObject.Id == myJsonObjectToCompare.Id)
        {
            //Do something
        }
    }
    
    class MyObject
    {
        public int Id { get; set; }
        public int Type { get; set; }
        public DateTime? Date { get; set; }
        public string Group { get; set; }
        public string Country { get; set; }
    }

    Bitte beachten Sie, dass in diesem Beispiel erfolgt über die Newtonsoft.JSON Bibliothek. Weitere Informationen über die Bibliothek finden hier.

  2. -1

    Nur Ihre JSON in eine c# – Klasse mit der Id zuerst und dann serialisieren, es wieder, wenn es das ist, was Sie brauchen. Sie wissen, dass Sie über „Typ“ zweimal in der JSON-string? In dieser Lösung wird es „fixiert“, also Sie haben es nur einmal wie es sein sollte. Aber wenn dein string wirklich ist mit zwei Typ-das wird nicht funktionieren, da die Saiten falsch sein. Wenn Sie wirklich so sind wie Sie, müssen Sie einige hässliche string-manipulation zu beheben die Reihenfolge, aber ich hoffe, dass die erste Zeichenfolge ist falsch, nur hier und nicht in Ihrem code.

        private void Test() {
            string json = @"{""Type"":1, ""Id"":1000,""Date"":null,""Group"": ""Admin"",""Country"":""India"",""Type"":1}";
    
            JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
            MyJsonObject myJsonObject = jsonSerializer.Deserialize<MyJsonObject>(json);
    
            string s = jsonSerializer.Serialize(myJsonObject);
            //Returns: {"Id":1000,"Type":1,"Date":null,"Group":"Admin","Country":"India"}
        }
    
    
    class MyJsonObject {
        public int Id { get; set; }
        public int Type { get; set; }
        public DateTime? Date { get; set; }
        public string Group { get; set; }
        public string Country { get; set; }
    }

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.