![](/img/trans.png)
[英]What c# model will serialize to a JSON object with dynamic property names each having a list of lists of values?
[英]Serialize a JSON object without property name having a list of custom object in C#
我有 model 如下:
public class CustomModel
{
public string Data1 { get; set; }
public string Data2 { get; set; }
}
public class root
{
public List<CustomModel> data { get; set; }
}
我的有效载荷如下:
List<CustomModel> cms = new List<CustomModel>();
CustomModel cm1 = new CustomModel();
cm1.Data1 = "a";
cm1.Data2 = "b";
cms.Add(cm1);
CustomModel cm2 = new CustomModel();
cm2.Data1 = "D";
cm2.Data2 = "E";
cms.Add(cm2);
BaseClass baseClass = new BaseClass();
baseClass.data = cms;
我的 JSON 是:
var json = new JavaScriptSerializer().Serialize(baseClass);
结果是:
{"data":[{"data1":"a","data2":"b"},{"data1":"D","data2":"E"}]}
但我需要:没有“数据”属性如下:
{[{"data1":"a","data2":"b"},{"data1":"D","data2":"E"}]}
我尝试了以下 function:
public static IEnumerable<object> GetPropertyValues<T>(T input)
{
return input.GetType()
.GetProperties()
.Select(p => p.GetValue(input));
}
喜欢
var value_only = GetPropertyValues(baseClass);
var json = new JavaScriptSerializer().Serialize(value_only);
BUT it returns [[{"data1":"a","data2":"b"},{"data1":"D","data2":"E"}]]
除了手动添加之外,还有其他方法吗? 请帮忙。
注意{[{"data1":"a","data2":"b"},{"data1":"D","data2":"E"}]}
是无效的 json。 在 Json 对象中,数据/值由(命名的)属性组织。
However, here you seem to want a (root) Json object containing a value being Json array, but that value is not associated with a Json object property, thus not being valid Json.
If you really want invalid Json, i suggest you serialize the List<CustomModel>
instance instead of the root model instance, resulting in a Json array, and then manually adding the surrounding {
and }
to the serialized Json string, thus giving you your desired无效的 Json 结果:
var json = new JavaScriptSerializer().Serialize(baseClass.data);
var desiredResult = "{" + json + "}";
您不需要根 class (或基本 class 您必须确定名称。只需使用
var json = new JavaScriptSerializer().Serialize(cms);
PS。
现在是时候使用现代串行器 select 了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.