https://stackoverflow.com/questions/62625664

CSharp · Console

/Program.cs

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);
        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; }
	
    [JsonConverter(typeof(ArrayToSingleStringConverter))]
    public string FirstName { get; set; }
	
    [JsonConverter(typeof(ArrayToSingleStringConverter))]
    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();
    }
}
;