3

プロジェクトで WCF DataServices によってホストされている OData エンドポイントを使用して、JavaScript フロントエンドから呼び出すことを望んでいます。JSON オブジェクトのプロパティ名は、C# の規則ではなく Javascript の規則に従うことが重要です。

ThisIsAProperty最終的には次のようになります。thisIsAProperty

逆に、c# オブジェクトは慣用的な c# 命名規則を保持する必要があります。

この目標を達成するために、C# コードで意図が重複しないようにすることも重要です。たとえば、単にキャメルケースでプロパティ名を言い換えるだけの属性を各プロパティに追加することは認められません。

ASP.NET MVC と Newtonsoft JSON シリアライザーを使用すると、シリアル化中にスイッチを切り替えるだけで、これをかなり簡単に実現できます。

データが常に camelCase 属性名で JSON にシリアル化されるようにする方法はありますか?

4

2 に答える 2

1

はい、キャメルケースで値を実装ISerializableして定義します。

[Serializable]
public class MyObject : ISerializable 
{
  public int n1;
  public int n2;
  public String str;

  public MyObject()
  {
  }

  protected MyObject(SerializationInfo info, StreamingContext context)
  {
    n1 = info.GetInt32("camelCase1");
    n2 = info.GetInt32("propertyValue2");
    str = info.GetString("kK");
  }
[SecurityPermissionAttribute(SecurityAction.Demand,SerializationFormatter=true)]
public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
  {
    info.AddValue("camelCase1", n1);
    info.AddValue("propertyValue2", n2);
    info.AddValue("kK", str);
  }
}
于 2011-07-15T14:07:42.413 に答える
0

WCF Data Services は大文字と小文字を区別するため、サーバーと JavaScript クライアントの間で大文字と小文字を変更することは実際にはオプションではありません。

ただし、WCF DS は基になるデータ モデルにバインドするだけなので、それを制御できれば、データ モデル内のすべてを非常に簡単にキャメルケースにすることができます。つまり、EF デザイナーに移動し、すべてのエンティティ セット、プロパティ、および関係をキャメルケース名に設定します。

おそらくあなたが探しているものではありませんが、これはC#コードにも影響するため... -Alex

于 2011-07-15T22:00:03.317 に答える