This is an invalid JSON format, moreover it does not have surrounding array brackets []
. Ideally you should fix this at source.
You could do a simple replace
MyLabels = JsonConvert.DeserializeObject<List<Label>>(labelnames = "[" + labelnames.Replace("'", "\"") + "]")
However this may throw an error if any of the values also contain a '
.
Therefore, you could create a custom JsonTextReader
using (var sw = new StringReader("[" + labelnames + "]"))
using (var reader = new MyJsonTextReader(sw))
{
JsonSerializer ser = new JsonSerializer();
MyLabels = ser.Deserialize<List<Label>>(reader);
}
class MyJsonTextReader : JsonTextReader
{
public override char QuoteChar { get; protected set; } = '\'';
public MyJsonTextReader(TextReader r) : base(r){}
}
class Label
{
public string LabelName;
public bool IsHeader;
}
dotnetfiddle