gpt4 book ai didi

c# - json在c#问题中读取

转载 作者:太空宇宙 更新时间:2023-11-03 12:45:59 25 4
gpt4 key购买 nike

我正在使用一个函数来读取 json 文件并将类列表返回到 UI。我的类(class)是

 public class UseCase
{
public string UseCaseId { get; set;}
public string UseCaseDescription { get; set;}
}

函数是这样的

 List<UseCase> usecaseList = new List<UseCase>();
ReadUsecaseContentFronJsonFile1();
usecaseList = UseCaseList();

UseCaseList() 是

private List<UseCase> UseCaseList()
{
List<UseCase> usecaseList = new List<UseCase>();
foreach (var value in deserializedData1.Values)
{
UseCase objUC = new UseCase();

objUC.UseCaseId = value.UseCaseId;
objUC.UseCaseDescription = value.UseCaseDescription;
usecaseList.Add(objUC);
}
return usecaseList;//isSigRequired;
}

private void ReadUsecaseContentFronJsonFile1()
{
deserializedData1 = ReadFromJsonFile1<Dictionary<string, UseCase>>();
}

读取json文件的函数是这样的

 protected static T ReadFromJsonFile1<T>() where T : new()
{
TextReader JsonReader = null;
try
{
var filePath = ConfigurationManager.AppSettings.Get("UsecaseListPath");
if (File.Exists(filePath))
{
JsonReader = new StreamReader(filePath);
var fileContents = JsonReader.ReadToEnd();
return JsonConvert.DeserializeObject<T>(fileContents);
}
else
{
return new T();
}
}
finally
{
if (JsonReader != null)
JsonReader.Close();
}
}

我没有在 (deserializedData1) 中获取 json 文件值。可能是什么问题??

我的 json 文件是:

{

"UseCases": {
"UseCase": [{
"UseCaseId": "CCS01",
"UseCaseDescription": "Add Device to CHF device log"
}, {
"UseCaseId": "CCS02",
"UseCaseDescription": "Remove device from CHF device log"
}, {
"UseCaseId": "CCS03",
"UseCaseDescription": "Restore CHF Device Log"
}
}

最佳答案

查看JSON文档的开头:

{
"UseCases": {
"UseCase": [{

它说您有一个根对象,其中包含一个对象,该对象包含一个包含列表的对象;)或者更恰本地说:

  1. 你有一个根对象
  2. 根对象包含一个名为“UseCases”的字段,它是一个对象
  3. “UseCases”字段包含一个属性“UseCase”,它是一个集合

代码:

// For the root object which contains the "UseCases" field
public class RootObject
{
public UseCasesContainer UseCases { get; set; }
}

// For the "UsesCases" field, the tricky thing is that
// it's not a collection but an object
public class UseCasesContainer
{

// ..which contains a collection field.
public Collection<UsesCase> UsesCase { get; set; }
}

集合本身包含您指定的 UseCase 对象。

因此要反序列化它,您可以像这样使用 json.net:

var rootObject = JsonConvert.DeserializeObject<RootObject>(yourJson);

//don't be fooled by the property name, this is the collection
var allUseCases = rootObject.UseCases.UseCase;

如果您的 JSON 只应包含用例,您可以创建一个没有字段的文档:

[
{
"UseCaseId": "CCS01",
"UseCaseDescription": "Add Device to CHF device log"
}, {
"UseCaseId": "CCS02",
"UseCaseDescription": "Remove device from CHF device log"
}, {
"UseCaseId": "CCS03",
"UseCaseDescription": "Restore CHF Device Log"
}
]

.. 可以反序列化为:

var useCases = JsonConvert.DeserializeObject<IList<UseCase>>(json);

关于c# - json在c#问题中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37314600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com