我有一个包含嵌套json的json文件,我希望在配置绑定时将其反序列化为字符串属性。
这是配置文件:
{
"Service": {
"Id": "ccApiMicroservice",
"Configuration": {
"Option1": "value1",
"Option1": "value2"
}
}
}
这是相应的配置类:
public class ServiceOptions
{
public string Id { get; set; }
[JsonConverter(typeof(JsonStringConverter))]
public string Configuration { get; set; }
}
我曾尝试使用自定义json转换器将嵌套的json转换为字符串,但绑定机制会忽略转换器(在转换器的方法中有断点,但没有一个被击中),即使我在ConfigureServices中配置了它,如下所示:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().AddJsonOptions(
options => options.SerializerSettings.Converters.Add(new JsonStringConverter()));
services.Configure<ServiceOptions>(this.Configuration.GetSection("Service"));
}
我错过了什么?为什么忽略转换器?或者是否有另一种方法如何将嵌套的json反序列化为字符串属性?
修改
我尝试使用自定义JSON转换器的原因是,如果我尝试访问应用程序中任何位置的ServiceOptions
实例,我会收到以下异常:
System.InvalidOperationException: 'Cannot create instance of type 'System.String' because it is missing a public parameterless constructor.'
答案 0 :(得分:0)
以下是一个可能更简单的方法来获取和解析json项目的示例:
JObject config = JObject.Parse(File.ReadAllText("config.json"));
string service_id = (string)config.SelectToken("Service").SelectToken("Id");
Console.WriteLine(service_id);