0

JSON.Net を使用してオブジェクトをシリアル化しています。たとえば、これが私のオブジェクトである場合

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

「val」のデータは、key1:value1 のようなキーと値のペアの文字列です。最終的なシリアル化された文字列で上記の「keyValues」名を取得してはならず、代わりに次のようなシリアル化された文字列を取得するシナリオがあります

{
    "key1":"value1"
}

現在、シリアライザーを使用してこれを取得していますが、これは必要なものではありません

{
     "keyValues":"key:value1"
}

オブジェクト内で定義されたデフォルトの変数名/JSONProperty名を使用する代わりに、フィールドの名前を動的に割り当てるためのドキュメント/ソリューションを誰かが案内してくれますか?

よろしくお願いします。

4

1 に答える 1

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"}}
于 2012-04-18T15:28:37.873 に答える