猿问

如何读取 appSettings.json 中的字符串数组?

我的环境是 VS Code 和 .NET Core 2.0。


我需要从我的 appsetting.json 中读取一个状态代码和几对代码/消息。


这是我的 appsettings.json 文件


{

  "http": 

  {

    "statuscode": 200

  },

  "responses": 

  {

    "data": [

      {

        "code": 1,

        "message": "ok"

      },

      {

        "code": 2,

        "message": "erro"

      }

    ]

  }

}

我正在加载如下所示的配置文件和数据,但一切都为空:


private readonly IConfiguration _conf;

const string APPSET_SEC = "responses";

const string APPSET_KEY = "data";


public ValuesController(IConfiguration configuration)

{

    _conf = configuration;


    var section = _conf.GetSection($"{APPSET_SEC}:{APPSET_KEY}");

    var responses = section.Get<string[]>();


    var someArray = _conf.GetSection(APPSET_SEC).GetChildren().Select(x => x.Value).ToArray();

}

响应和 someArray 都为空。字符串数组似乎无效,但它看起来像一个有效的 Json 字符串数组。我需要修改我的 appsettings 或我的 C# 代码以将“数据”数组加载到变量中吗?


我在 json 文件中尝试了一个简化的数组


{

    "statuscode": 200,

    "data": [

      {

        "code": 1,

        "message": "ok"

      },

      {

        "code": 2,

        "message": "erro"

      }

    ]

 }

使用代码:


var section = _conf.GetSection($"{APPSET_SEC}");

var responses = section.Get<string[]>();

但我仍然没有快乐


拉莫斯之舞
浏览 258回答 2
2回答

慕妹3242003

string[]当它是对象数组时,您试图将其作为字符串数组获取,创建一个 POCO 模型以匹配设置public class ResponseSeting {&nbsp; &nbsp; public int code { get; set; }&nbsp; &nbsp; public string message { get; set; }}并得到一个数组。所以给出以下appsetting.json{&nbsp; "http":&nbsp;&nbsp; {&nbsp; &nbsp; "statuscode": 200&nbsp; },&nbsp; "responses":&nbsp;&nbsp; {&nbsp; &nbsp; "data": [&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; "code": 1,&nbsp; &nbsp; &nbsp; &nbsp; "message": "ok"&nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; "code": 2,&nbsp; &nbsp; &nbsp; &nbsp; "message": "erro"&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; ]&nbsp; }}响应数据将被提取如下var responses = Configuration&nbsp; &nbsp; .GetSection("responses:data")&nbsp; &nbsp; .Get<ResponseSeting[]>();

婷婷同学_

这可以使用放心库在java中完成JSON.body("http.statuscode") --> 会得到状态码JSON.body(responses.data.code[0]) --> will get the response codeJSON.body(responses.data.message[0])---> will get the response messageJSON.body(responses.data.code[1])JSON.body(responses.data.message[1])对 VScode 的工作原理一无所知。但长话短说,这可能对你有帮助!!!
随时随地看视频慕课网APP
我要回答