CSharp · Console
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
public class Program
{
public static void Main()
{
string json = @"
[
{
""id"": 0,
""label"": ""user"",
""FirstName"": [ ""Azhar"" ],
""LastName"": [ ""Rahi"" ]
},
{
""id"": 3,
""label"": ""user"",
""FirstName"": [ ""John"" ],
""LastName"": [ ""Doe"" ]
}
]";
List<User> users = JsonConvert.DeserializeObject<List<User>>(json, new ArrayToSingleStringConverter());
foreach (User user in users)
{
Console.WriteLine($"{user.Label} {user.Id}: {user.FirstName} {user.LastName}");
}
}
}
public class User
{
public int Id { get; set; }
public string Label { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class ArrayToSingleStringConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(string);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
JToken token = JToken.Load(reader);
switch (token.Type)
{
case JTokenType.Array:
return (string)token.Children<JValue>().FirstOrDefault();
case JTokenType.String:
return (string)token;
case JTokenType.Null:
return null;
default:
throw new JsonException("Unexpected token type: " + token.Type);
}
}
public override bool CanWrite => false;
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}