6

json.netシリアライザーを使用してシリアライズしている辞書があり、現在作成中です

{"phrases":[{"Key":"my-key1","Value":"blah"},{"Key":"my-key2","Value":"blah2"}]}

しかし、私はそれを出力したい

{"phrases":["my-key1":"blah"},{"my-key2":"blah2"}]}

私のモデルは次のようになります

public class Phrases
{
    public Dictionary<string, string> phrases;
}

これを発生させるためにフレーズモデルに適用できるデータ属性はありますか?

私は次のものを見つけましたが、Json.Netで文字列SerializeをKey-Valueディクショナリに返したくありませんか?

アップデート:

次のようにWebAPIコントローラーを拡張しています。JsonConvert.SerializeObject()を使用すると、正しいシリアル化が得られますが、返される文字列があります。

public class PhraseController : ApiController
    {
        private IApplicationModel applicationModel;

        public Phrases Get(string id)
        {
            var locale = new CultureInfo(id).LCID;
            var phrases = applicationModel.Phrases.Where(x => x.Locale = locale).ToDictionary(x => x.Name, y => y.Value);

            return new Phrases() { phrases = phrases };
        }

        public PhraseController(IApplicationModel applicationModel)
        {
            this.applicationModel = applicationModel;
        }
    }
4

1 に答える 1

2

最終的にはそれを機能させることができました。

問題は、それがまだを使用していたことでしたDataContractJsonSerializer。を追加する前にフォーマッターを削除する行を追加しましたが、JsonNetFormatter正しくシリアル化されるようになりました。

GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.JsonFormatter);

GlobalConfiguration.Configuration.Formatters.Add(new JsonNetFormatter(null));

(私はまだDataContractJsonSerializerを使用しているベータリリースを使用しています)

于 2012-05-18T15:45:01.173 に答える