如何使用JSON解析器序列化动态字段名称

时间:2012-04-18 06:30:41

标签: json.net json

我正在使用JSON.Net来序列化我的对象。例如,如果这是我的对象

Class MainData
{
   [JsonProperty("keyValues")]
   string val;
}

'val'的数据是一个键值对字符串,如key1:value1。 我有一个场景,我不应该在我的最终序列化字符串中获得上面的'keyValues'名称,而是获得一个看起来像这样的序列化字符串

{
    "key1":"value1"
}

目前使用我的序列化程序,我得到了这个,这不是我需要的

{
     "keyValues":"key:value1"
}

有人可以指导我使用任何文档/解决方案来动态分配字段的名称,而不是使用在对象中定义的默认变量名称/ JSONProperty名称吗?

提前多多感谢。

1 个答案:

答案 0 :(得分:1)

我整天都在苦苦挣扎,我所做的就是使用字典对象并将其序列化 但是我有一条错误消息是“无法序列化字典”,应该已经阅读了整个消息,“当密钥不是字符串或对象时,无法序列化字典” 这对我有用,并给我一个键/值对

我有以下对象

public class Meal {
public int mealId;
public int value;
public Meal(int MealId, int Value) {
mealId = MealId;
value = Value;
} }

public class Crew
{

public Meal[] AllocatedMeals {
get {
return new Meal[]{ 
new Meal(1085, 2),
new Meal(1086, 1) }; } }

public int AllocatedMealTotal {
get {
return this.AllocatedMeals.Sum(x => x.value); } }
}

然后是以下代码

Dictionary<string,string> MealsAllocated = crew.AllocatedMeals.ToDictionary(x => x.mealId.ToString(), x => x.value.ToString());

return new JavaScriptSerializer().Serialize(
new {
Allocated = new {
Total = crew.AllocatedMealTotal,
Values = MealsAllocated } )

获取

"Allocated":{"Total":3,"Values":{"1085":"2","1086":"1"}}