我无法弄清楚如何将Json输入转换为c#模型。
这是我的控制器得到的Json的一个例子:
[{"name":"StartDate",
"value":"0",
"Processors":[[{"processor":{"ProcessorName":"searchAndReplace","ProcessorParameters":[{"ParameterName":"toto"},{"ParameterName":"taa"}]}},
{"processor":{"ProcessorName":"searchAndReplace","ProcessorParameters":[{"ParameterName":"toto"},{"ParameterName":"tuuut"}]}}]]},
{"name":"EndDate","value":"1","Processors":[[]]},
{"name":"Country","value":"2","Processors":[[]]}]
这是我的控制器的签名:
public JsonResult SendMapping(List<Mapping> MyMappings)
这是我的班级“制图”:
public class Mapping
{
public string Value { get; set; }
public string Name { get; set; }
public List<Processor> Processors { get; set; }
}
然后我的“ProcessorModel”
public enum ProcessorNames { SearchAndReplace }
public class ProcessorModel
{
public Processor processor;
}
public class Processor
{
public ProcessorNames ProcessorName;
public List<Parameter> ProcessorParameters;
}
public class Parameter
{
public List<string> ParameterName;
}
到目前为止,我可以获得所有名称和值。我还可以检索第一个 ProcessorName ,但不检索其参数,也不检索其他 ProcessorNames
答案 0 :(得分:4)
答案 1 :(得分:1)
我认为您不需要ProcessorModel。
你的映射类应该包含:
public List<Processor> Processors { get; set; }
而不是
public List<ProcessorModel> Processors { get; set; }
答案 2 :(得分:1)
{"ParameterName":"toto"}
在您的json(字符串)中定义为字符串,在POCO中,您将其作为public List<string> ParameterName;
json字符串应为{"ParameterName":["toto"]}
答案 3 :(得分:1)
我也不认为你的JSON是对的。
应该是
[{
"name": "StartDate",
"value": "0",
"Processors": [{
"processor": {"ProcessorName": "searchAndReplace",
"ProcessorParameters": [{
"ParameterName": "toto"
},
{
"ParameterName": "taa"
}]},
"processor": {"ProcessorName": "searchAndReplace",
"ProcessorParameters": [{
"ParameterName": "toto"
},
{
"ParameterName": "taa"
}]},
},
{
"processor": {"ProcessorName": "searchAndReplace",
"ProcessorParameters": [{
"ParameterName": "toto"
},
{
"ParameterName": "taa"
}]},
"processor": {"ProcessorName": "searchAndReplace",
"ProcessorParameters": [{
"ParameterName": "toto"
},
{
"ParameterName": "taa"
}]},
}]
}]
答案 4 :(得分:1)
在我看来,json中存在与小写和大写属性名称相关的问题。属性/密钥名称必须与类中定义的相同。请更正并使用下面的类进行序列化或脱盐。
public class JsonHelper
{
/// <summary>
/// JSON Serialization
/// </summary>
public static string JsonSerializer<T>(T t)
{
var ser = new DataContractJsonSerializer(typeof(T));
var ms = new MemoryStream();
ser.WriteObject(ms, t);
string jsonString = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
return jsonString;
}
/// <summary>
/// JSON Deserialization
/// </summary>
public static T JsonDeserialize<T>(string jsonString)
{
var ser = new DataContractJsonSerializer(typeof(T));
var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
T obj = (T)ser.ReadObject(ms);
return obj;
}
}