110,502
社区成员
发帖
与我相关
我的任务
分享
var vRex = new Regex(@"\[\]");
var s = vRex.Replace(strJson, "null");//去除空的[]
static void Main(string[] args)
{
var s = "{'Name':'Test','Age':[]}";
var o = JObject.Parse(s);
Console.WriteLine(JsonConvert.SerializeObject(o, Formatting.Indented));
}
static void Main(string[] args)
{
var test = JsonConvert.DeserializeObject<Test>("{\"Name\":\"Test\",\"Age\":[]}");
}
class Test
{
public string Name { get; set; }
[JsonConverter(typeof(TestConverter))]
public string Age { get; set; }
}
class TestConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return true;
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var value = reader.Value;
if (value == null)
{
reader.Skip();
return null;
}
else
{
return value;
}
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteValue(value);
}
}
仅供参考,不知道效率怎么样,不过我觉得StringBuilder的Replace应该不会太慢吧。。。
var sb = new StringBuilder();
sb.Append(strJson);
sb.Replace("[]", "null");