Sie folgende Standardmethode verwenden für Json
JsonReaderWriterFactory.CreateJsonWriter (Stream Stream, Encoding Codierung, bool ownsStream, bool Gedankenstrich, string indentChars) formatiert zu werden
Nur gesetzt "indent == true"
Probieren Sie etwas wie dieses
public readonly DataContractJsonSerializerSettings Settings =
new DataContractJsonSerializerSettings
{ UseSimpleDictionaryFormat = true };
public void Keep<TValue>(TValue item, string path)
{
try
{
using (var stream = File.Open(path, FileMode.Create))
{
var currentCulture = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
try
{
using (var writer = JsonReaderWriterFactory.CreateJsonWriter(
stream, Encoding.UTF8, true, true, " "))
{
var serializer = new DataContractJsonSerializer(type, Settings);
serializer.WriteObject(writer, item);
writer.Flush();
}
}
catch (Exception exception)
{
Debug.WriteLine(exception.ToString());
}
finally
{
Thread.CurrentThread.CurrentCulture = currentCulture;
}
}
}
catch (Exception exception)
{
Debug.WriteLine(exception.ToString());
}
}
Achten Sie auf Linien
var currentCulture = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
....
Thread.CurrentThread.CurrentCulture = currentCulture;
Sie InvariantCulture verwenden sollten auf den Computern mit verschiedenen regionalen Einstellungen Ausnahme während der Deserialisierung zu vermeiden. Zum Beispiel, das ungültige Format doppelt oder DateTime manchmal verursachen sie.
Für Deserialisieren
public TValue Revive<TValue>(string path, params object[] constructorArgs)
{
try
{
using (var stream = File.OpenRead(path))
{
var currentCulture = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
try
{
var serializer = new DataContractJsonSerializer(type, Settings);
var item = (TValue) serializer.ReadObject(stream);
if (Equals(item, null)) throw new Exception();
return item;
}
catch (Exception exception)
{
Debug.WriteLine(exception.ToString());
return (TValue) Activator.CreateInstance(type, constructorArgs);
}
finally
{
Thread.CurrentThread.CurrentCulture = currentCulture;
}
}
}
catch
{
return (TValue) Activator.CreateInstance(typeof (TValue), constructorArgs);
}
}
Dank!
Es gibt auch ein Beispiel für die Formatierung von Json-Ausgabe auf seinem Blog http://james.newtonking.com/archive/2008/ 10/16/asp-net-mvc-und-json-net.aspx – R0MANARMY
@Brad Er zeigte absolut den gleichen Code, aber mit einem Modell – Mia