2016-07-13 5 views
0

Ich entwickle eine ASP.NET Web API-Anwendung mit .NET Framework 4.6.1, C# und JSON.Net.Serialize Tuple <String, Byte> ohne Rückgabe m_Item1, M_Item2

Ich bekomme Probleme beim Zurückgeben einer Liste von Tuple. Ich erhalte diese json:

[ 
    { 
    "m_Item1": "88962730000000378995", 
    "m_Item2": 2 
    } 
] 

Ich verwende diesen Code:

HttpResponseMessage response = null; 
List<Tuple<string, byte>> exCodes = null; 

[ ... ] 

response = Request.CreateResponse(HttpStatusCode.OK, exCodes); 

Aber ich will diese bekommen:

[ { 
    "Item1": "88962730000000378995", 
    "Item2": 2 
    } 
] 

Um diesen Code zu erhalten Ich habe diesen Code verwenden :

HttpResponseMessage response = null; 
List<Tuple<string, byte>> exCodes = null; 

[ ... ] 

var j = GlobalConfiguration.Configuration.Formatters.JsonFormatter; 
j.SerializerSettings.ContractResolver = new DefaultContractResolver(); 

response = Request.CreateResponse(HttpStatusCode.OK, exCodes); 

Aber ich bin nicht sicher, ob dieser Code j.SerializerSettings.ContractResolver = new DefaultContractResolver(); betrifft den Rest des Dienstes.

Gibt es eine andere Möglichkeit, den Json, den ich will, ohne new DefaultContractResolver(); zu bekommen?

+0

I 'bekam [{ "Element1": "88962730000000378995", "Element2": 2}]' auf meinem Rechner. Welche Version von .NET? – user3185569

+0

Wie wäre es mit einem anonymen Objekt mit 'Item1' und' Item2' als Eigenschaften statt mit 'Tuple'? – GeorgeChond

+0

@GeorgeChond Wie kann ich ein anonymes Objekt verwenden? – VansFannel

Antwort

1

Sie können ein anonymes Objekt erstellen:

var anon = exCodes.Select(x => new { x.Item1, x.Item2 }); 

response = Request.CreateResponse(HttpStatusCode.OK, anon); 
Verwandte Themen