4

zu forma ServiceStack Verwendung von I Anfrage, um zu formatieren muß, dass die CodValue Eigenschaft in diesem Format #.#Wie Objekt JSON mit DataAnnotation serialisiert Doppel Eigenschaft mit ServiceStack Anfrage

[DataContract(Name = "request1")] 
public class Request1 
{ 
    [DataMember(Name = "codValue")] 
    public double CodValue { get; set; } 
} 

var request1 = new Request1 { CodValue = 0.0 } 
_serviceClientBase.Post(request1); 

jedoch bleibt, wenn ich die schicken Anfrage der Server-Seite erhält CodValue = 0 Aber wie die Server-Seite Java ist, gibt es einen Fehler, der besagt, dass es Java.Lang.Long und nicht Double ist.

Wie kann ich ServiceStack zwingen, die JSON Anfrage im Format 0.0 zu halten?

Antwort

3

Sie einen JsConfig<T>.RawSerializerFn angeben anhängen alle fehlenden .0 Suffix, zB:

JsConfig<double>.IncludeDefaultValue = true; 
JsConfig<double>.RawSerializeFn = d => 
{ 
    var str = d.ToString(CultureInfo.InvariantCulture); 
    return str.IndexOf('.') >= 0 ? str : str + ".0"; 
}; 

Um das gewünschte Ergebnis zu drucken:

var dto = new Request1 { CodValue = 0.0 }; 

dto.ToJson().Print(); //= {"codValue":0.0} 
+1

hast du mir wieder sehr geholfen! Danke, ich weiß das zu schätzen! –

1

Haben Sie versucht, Json.Net zu verwenden?

verdoppelt werden automatisch in #.#-Format konvertieren und auch dort ist Resolver Namen Camel Fall Eigenschaft:

using Newtonsoft.Json; 
using Newtonsoft.Json.Serialization; 

... 

class Request1 
{ 
    public double CodValue { get; set; } 
} 

... 

var request = new {Request1 = new Request1()}; 
var json= JsonConvert.SerializeObject(request, 
    new JsonSerializerSettings() {ContractResolver = new CamelCasePropertyNamesContractResolver()}); 

Die JSON-String sieht so aus:

{"request1":{"codValue":0.0}} 
+0

Großartig, Ihr Vorschlag funktioniert hier. Mythz gab mir jedoch einen einfachen Weg, dies mit den nativen Optionen von ServiceStack zu tun. –

+1

@RogerOliveira, keine Sorgen. Ich kenne den ServiceStack Service nicht wirklich. Hoffe, dass es für andere hilfreich sein wird people auch ^^. – Thomas