[英]How to convert API method's input parameter to JSON file in .Net Core 5 API?
I am creating a method in.Net Core 5 Web API controller and this method will be invoked by different clients with input as in JSON format.
其中, datasource_values
中的對象和屬性的數量是動態的。 它可能因客戶而異。 現在我需要編寫一個 API 方法來提取所有屬性值並僅將datasource_values
存儲為 JSON 文件。 JSON 的文件名應該是source
的值。
如果value
有兩個source
,那么我需要創建兩個 JSON 文件。
我嘗試創建兩個 model 類和 API 方法來提取 JSON 數據,但我無法達到預期的結果。 在.Net Core 5 中,我不確定如何實現這一點。
輸入數據結構如下所示。
{
"Name": "APAC",
"value": [
{
"source": "datasource1",
"datasource_values": [
{
"ID": 100,
"Name": "ABCD"
},
{
"ID": 101,
"Name": "EFGH"
}
]
},
{
"source": "datasource2",
"datasource_values": [
{
"No": 1,
"Name": "ABC",
"Amount": 1000
},
{
"No": 2,
"Name": "BBC",
"Amount": 1100
}
]
}
]
}
Model Class:
public class CreateJSON
{
public string Name { get; set; }
public List<JSONData> value { get; set; }
}
public class JSONData
{
public string source { get; set; }
public List<object> datasource1_values { get; set; }
}
API方法:
[Route("CreateJSONData")]
[HttpPost]
public ActionResult<int> CreateJSONData([FromBody] CreateJSON ipdata)
{
try
{
string json = JsonSerializer.Serialize(ipdata);
File.WriteAllText(@"c:\input.json", json);
return Ok();
}
catch (Exception ex)
{
return StatusCode(500);
}
}
您不需要任何自定義類。
[HttpPost("CreateJSONData")]
public ActionResult<int> CreateJSONData([FromBody] JsonDocument ipdata)
{
try
{
string json = ipdata.RootElement.ToString();
File.WriteAllText(@"c:\input.json", json);
return Ok();
}
catch (Exception ex)
{
return StatusCode(500);
}
}
但我建議您使用 Newtonsoft.Json。
using Newtonsoft.Json;
[HttpPost("CreateJSONData")]
public ActionResult<int> CreateJSONData([FromBody] JObject ipdata)
{
try
{
string json = ipdata.ToString();
File.WriteAllText(@"c:\input.json", json);
return Ok();
}
catch (Exception ex)
{
return StatusCode(500);
}
}
更新
如果您只需要存儲數據部分
using Newtonsoft.Json;
json = ipdata["value"].ToString();
//or
using System.Text.Json;
var json= ipdata.RootElement.GetProperty("value").ToString();
....
結果
[
{
"source": "datasource1",
"datasource_values": [
{
"ID": 100,
"Name": "ABCD"
},
{
"ID": 101,
"Name": "EFGH"
}
]
},
{
"source": "datasource2",
"datasource_values": [
{
"No": 1,
"Name": "ABC",
"Amount": 1000
},
{
"No": 2,
"Name": "BBC",
"Amount": 1100
}
]
}
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.