You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.3 KiB
89 lines
2.3 KiB
1 month ago
|
using LitJson;
|
||
|
using System;
|
||
|
using Newtonsoft.Json;
|
||
|
using System.Collections;
|
||
|
|
||
|
namespace ThinkingData.Analytics
|
||
|
{
|
||
|
public class MyJsonDataConverter : JsonConverter
|
||
|
{
|
||
|
public override bool CanConvert(Type objectType)
|
||
|
{
|
||
|
return typeof(JsonData) == objectType;
|
||
|
}
|
||
|
|
||
|
public override object ReadJson(Newtonsoft.Json.JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
|
||
|
{
|
||
|
throw new NotImplementedException();
|
||
|
}
|
||
|
|
||
|
public override void WriteJson(Newtonsoft.Json.JsonWriter writer, object value, JsonSerializer serializer)
|
||
|
{
|
||
|
var jsonData = value as JsonData;
|
||
|
WriteJson(jsonData, writer);
|
||
|
}
|
||
|
|
||
|
private void WriteJson(IJsonWrapper obj, Newtonsoft.Json.JsonWriter writer)
|
||
|
{
|
||
|
if (obj == null)
|
||
|
{
|
||
|
writer.WriteNull();
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (obj.IsString)
|
||
|
{
|
||
|
writer.WriteValue(obj.GetString());
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (obj.IsBoolean)
|
||
|
{
|
||
|
writer.WriteValue(obj.GetBoolean());
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (obj.IsDouble)
|
||
|
{
|
||
|
writer.WriteValue(obj.GetDouble());
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (obj.IsInt)
|
||
|
{
|
||
|
writer.WriteValue(obj.GetInt());
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (obj.IsLong)
|
||
|
{
|
||
|
writer.WriteValue(obj.GetLong());
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (obj.IsArray)
|
||
|
{
|
||
|
writer.WriteStartArray();
|
||
|
foreach (object elem in (IList)obj)
|
||
|
WriteJson((JsonData)elem, writer);
|
||
|
writer.WriteEndArray();
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (obj.IsObject)
|
||
|
{
|
||
|
writer.WriteStartObject();
|
||
|
foreach (DictionaryEntry entry in ((IDictionary)obj))
|
||
|
{
|
||
|
writer.WritePropertyName((string)entry.Key);
|
||
|
WriteJson((JsonData)entry.Value, writer);
|
||
|
}
|
||
|
writer.WriteEndObject();
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|