Entwickler-Ecke

Sonstiges (.NET) - JSON Javascript <-> C#


Dsharp - Di 09.09.14 11:12
Titel: JSON Javascript <-> C#
Hallo zusammen,

ich möchte einen json string in c# einlesen und dabei ein object struct (array) wie in javascript erstellen. (s. unten).
Ich möchte dann auch in C# entsprechend so zugreifen: (Beispiel)

C#-Quelltext
1:
2:
label.text = arrayObject.name;
checkbox.checked = arrayObject.states[0];


Der JSON String muss dann natürlich immer gleich formatiert bleiben.
Daher müssen beide Objekte (C# und JS gleich sein).

Hat jemand eine Idee?



JavaScript-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var arrayObject= {
  name:"Test",  
  number: 6;
  states:[0,0,0,0,0,0,0,0,0,0,0,0,0,0],    
  value1:0,                    
  value2:0          
}

// Result of JSON.stringify(arrayObject);
{"name":"","number":6,"states":[0,0,0,0,0,0,0,0,0,0,0,0,0,0],"value1":0,"value2":0}


Th69 - Di 09.09.14 12:31

Hallo,

dafür nimmst du am besten die Komponente Json.NET [https://json.codeplex.com/].
Die entsprechende C#-Klasse mußt du dann aber entsprechend manuell erzeugen.

PS: Doku für Json.NET gibt es unter Json.NET Documentation [http://james.newtonking.com/json/help/index.html]


Dsharp - Di 09.09.14 13:54

Danke, hat wunderbar geklappt.
Hier ein kleines Tutorial von mir:

1. json.net herunterladen (newtonking).
2. Verweis hinzufügen > Durchsuchen > DLL Newtonsoft.Json.dll laden.
3. using Newtonsoft.Json;
4. Eine Klasse bauen die eurer json Struktur entspricht. (Hierzu gibt es auch json2class Converter im Netz).

Beispiel:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
string json = @'{"name":"","number":6,"states":[0,0,0,0,0,0,0,0,0,0,0,0,0,0],"value1":0,"value2":0}';
ObjectJson objectJSON = JsonConvert.DeserializeObject<ObjectJson>(json); // convert json to object (class)
string json = JsonConvert.SerializeObject(objectJSON); // convert object (class) to json

public class ObjectJson 
{
    public string name{ get; set; }           
    public int number{ get; set; }            
    public List<int> states{ get; set; }     
    public int value1{ get; set; }              
    public int value1{ get; set; }                 
}


Ich hoffe das hilft dem ein oder anderen weiter.


Th69 - Di 09.09.14 19:01

Klasse und super, daß du gleich eine Anleitung hier postest. :zustimm: