簡體   English   中英

無法在 Json 文件上寫入正確的值

[英]Cannot write the correct value on Json file

我正在嘗試編寫一個函數,在我的 Json 文件上寫入我在 PostMan 上輸入的值,我的 Json 文件如下:

[
    {
        "targets":[
            "192.168.1.101:9182",
            "192.168.1.103:9100",
            "192.168.1.105:9182"
        ]
    }
]

M 嘗試使用以下查詢作為目標:

{
        "targets": [
            "192.168.1.117:9100"
        ]
}

這是我的班級模型:

public class targetResponse
    {
        public IList<string> targets { get; set; }
    }

使用郵遞員,如圖所示: 在此處輸入圖片說明

在 prometheus 部分一切正常(沒有給我錯誤)。

這是我使用的功能:

[HttpPost]
[ProducesResponseType(typeof(targetResponse), StatusCodes.Status201Created)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task<ActionResult<targetResponse>> PostNewInstanceToConfig([FromBody] targetResponse _target)
{
    IList<targetResponse> myList = new List<targetResponse>();
    var jsonString = System.IO.File
       .ReadAllText(_filePath);
    myList = JsonConvert.DeserializeObject<List<targetResponse>>(jsonString);
    myList.FirstOrDefault().targets.Add(_target.ToString());
    StreamWriter myWriter = new StreamWriter(_filePath);
    JsonSerializer mySerializer = new JsonSerializer();
    mySerializer.Serialize(myWriter, myList);
    myWriter.Close();

    return null;
}

它打開文件並寫下以下內容,我不明白為什么它不為什么:

[
  {
    "targets": [
      "192.168.1.101:9182",
      "192.168.1.103:9100",
      "192.168.1.105:9182",
      "ApplicationTestCRUD_JSON.targetResponse",
      "ApplicationTestCRUD_JSON.targetResponse"
    ]
  }
]

“ApplicationTestCRUD_JSON”是我的項目名稱。

請問有什么幫助嗎?

編輯:

我添加了一個foreach循環並刪除了.toString()方法,我的函數現在看起來像這樣:

[HttpPost]
[ProducesResponseType(typeof(targetResponse), StatusCodes.Status201Created)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task<ActionResult<targetResponse>> PostNewInstanceToConfig([FromBody] targetResponse _target)
{
    IList<targetResponse> myList = new List<targetResponse>();
    var jsonString = System.IO.File
       .ReadAllText(_filePath);
    myList = JsonConvert.DeserializeObject<List<targetResponse>>(jsonString);
    foreach(var x in _target.targets)
    {
        myList.FirstOrDefault().targets.Add(x);
    }
    StreamWriter myWriter = new StreamWriter(_filePath);
    JsonSerializer mySerializer = new JsonSerializer();
    mySerializer.Serialize(myWriter, myList);
    myWriter.Close();

    return null;
}

您正在執行_target.ToString()並且由於_targettargetResponse類型, targetResponse您將返回默認的 ToString 文本,即對象類型的全名。

您可能想要訪問_target的屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM