Ich verwende JsonConvert.SerializeObject, um ein Modellobjekt zu serialisieren. Der Server erwartet alle Felder als Zeichenfolgen. Mein Modellobjekt verfügt über numerische Eigenschaften und Zeichenfolgeneigenschaften. Ich kann dem Modellobjekt keine Attribute hinzufügen. Gibt es eine Möglichkeit, alle Eigenschaftswerte als Strings zu serialisieren? Ich muss nur die Serialisierung und nicht die Deserialisierung unterstützen.Json.net serialize numerische Eigenschaften als Zeichenfolge
1
A
Antwort
6
Sie können Ihre eigenen JsonConverter
auch für numerische Typen bereitstellen. Ich habe das gerade versucht, und es funktioniert - es ist schnell und schmutzig, und Sie wollen an Sicherheit grenzender Wahrscheinlichkeit, sie verlängern anderen numerischen Typen zu unterstützen (long
, float
, double
, decimal
usw.), aber es sollten Sie gehen:
using System;
using System.Globalization;
using Newtonsoft.Json;
public class Model
{
public int Count { get; set; }
public string Text { get; set; }
}
internal sealed class FormatNumbersAsTextConverter : JsonConverter
{
public override bool CanRead => false;
public override bool CanWrite => true;
public override bool CanConvert(Type type) => type == typeof(int);
public override void WriteJson(
JsonWriter writer, object value, JsonSerializer serializer)
{
int number = (int) value;
writer.WriteValue(number.ToString(CultureInfo.InvariantCulture));
}
public override object ReadJson(
JsonReader reader, Type type, object existingValue, JsonSerializer serializer)
{
throw new NotSupportedException();
}
}
class Program
{
static void Main(string[] args)
{
var model = new Model { Count = 10, Text = "hello" };
var settings = new JsonSerializerSettings
{
Converters = { new FormatNumbersAsTextConverter() }
};
Console.WriteLine(JsonConvert.SerializeObject(model, settings));
}
}
Verwandte Themen
- 1. JSON.NET Serialize DateTime.MinValue als null
- 2. Serialize als NDJSON mit Json.NET
- 3. Json.Net Serialize String von URI
- 4. Json.NET Serialize private Mitglieder und nicht nur lesbar Eigenschaften
- 5. JSON.NET: Serialize JSON Zeichenfolge Eigenschaft in JSON-Objekt
- 6. Serialize Dictionary <,> als Array in Json.NET
- 7. Json.Net: Serialize/Deserialize-Eigenschaft als Wert, nicht als ein Objekt
- 8. Serialize Enum als String in JSON.NET mithilfe von Attributen
- 9. Numerische Eigenschaften, die von SPARQL als Zeichenfolge zurückgegeben werden
- 10. Serialize [Flags] Enumeration als Zeichenfolge
- 11. Serialize Byte-Array als Zeichenfolge
- 12. Serialize nur einfache Typen mit Json.Net
- 13. Serialize Entity Framework-Objekt mit Json.Net
- 14. Numerische Datenrahmen Spalten Reihenfolge falsch als Zeichenfolge
- 15. Serialize ValueObject als XML
- 16. Karte unbekannte Eigenschaften mit json.net
- 17. Serialize MongoDB ObjectId zu Zeichenfolge
- 18. Serialize-Eigenschaft, aber nicht Deserialize-Eigenschaft in Json.Net
- 19. Benutzerdefinierte Deserialisierung von Eigenschaften mit Json.net
- 20. JSON.NET serialisieren JObject beim Ignorieren Null Eigenschaften
- 21. Serialize ein Objekt direkt zu einem JObject statt zu einer Zeichenfolge in json.net
- 22. Json.Net Umbenennen von Eigenschaften während der Serialisierung
- 23. Serialize DateTime als binär
- 24. Pandas Zeichenfolge numerische
- 25. Serialize spezifischen Eigenschaften einer Klasse für TSV
- 26. Serialize-Feld vom Typ Typ mit FormatterAssemblyStyle.Simple in Json.NET
- 27. Wie Zeichenfolge JSON mit JSON.NET
- 28. serialize Zeichenfolge für das Senden von
- 29. Wie Serialize Objekt zu Json mit json.net, die eine Bildeigenschaft enthält
- 30. Json.net Async zu schreiben, als
http://stackoverflow.com/questions/37475997/convert-int-to-string-while-serialize-object-using-json-net –
@CodeJoy: Das scheint ziemlich DataTable-konzentrierte sich auf mich - ich kann nicht sehen Wie einige dieser Antworten dem OP helfen werden. –
Siehe [Lange Zahl als Zeichenfolge in der Serialisierung konvertieren] (https://stackoverflow.com/questions/17369278/convert-long-number-as-string-in-the-serialization). – dbc