0

クライアント側のプログラミングに取り組んでおり、javascriptオブジェクトをc#オブジェクトに変換して、データベースに保存できるようにしたいと考えています。これを達成する方法はありますか?ありがとう

4

3 に答える 3

5

javascript:

var obj = {id:0,userName:'Bill'};

c#、クラスの定義:

public class myClass
{
  public int id;
  public string userName;
}

次に、objをサーバーに転送し(たとえば、AJAXリクエストを使用して)、オブジェクトを操作する必要がある場合は逆シリアル化します

myClass obj = (new JavascriptSerializer()).Deserialize<myClass>(objJson);

ただし、逆シリアル化せずに実行して、objJson文字列をデータベースに保存できます

于 2012-11-21T15:56:01.287 に答える
2

まず、コードビハインドでWebサービスを使用して、JSONオブジェクトをサーバー側に渡す必要があります。次に、このすばらしいライブラリを試すことができます。

JSON.net

使用するシリアル化/逆シリアル化の手法に関係なく、ここで克服しなければならない最大のハードルは、JSON文字列をクライアント側からコードの背後にあるコードに渡す方法です。このために、jQueryのAJAX機能を使用することをお勧めします。私がクライアントから情報を渡す方法を学んでいたとき、この記事は私にとって非常に貴重であることがわかりました

于 2012-11-21T15:52:10.410 に答える
-1

このソリューションを機能させるには、Tで表されるタイプが、DataContract属性とDataMember属性で装飾されたタイプである必要があります。DataContractJsonSErializerは、JavascriptSerializerよりもはるかに優れています。これは、C#RESTクライアント用に作成したコードからのものです。ただし、一般的にシリアル化および逆シリアル化する方法は示しています。含まれているオブジェクトの例

[DataContract]
public SampleObject
{
   [DataMember("MyProperty")]
   public string MyProperty {get;set;}
}

    private static byte[] SerializeRequest<T>(string contentType, T request)
    {
        using (MemoryStream requestObjectStream = new MemoryStream())
        {
            if (contentType == "applicaton/json")
            {
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
                serializer.WriteObject(requestObjectStream, request);
            }
            else if (contentType == "application/xml")
            {
                DataContractSerializer serializer = new DataContractSerializer(typeof(T));
                serializer.WriteObject(requestObjectStream, request);
            }
            else
            {
                throw new Exception("invalid contentType");
            }
            requestObjectStream.Position = 0;

            return requestObjectStream.ToArray();
        }
    }

    private static T DeserializeResponse<T>(string acceptHeader, string responseString)
    {            
        if (acceptHeader == "applicaton/json")
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
            MemoryStream responseObjectStream = new MemoryStream(Encoding.UTF8.GetBytes(responseString));
            return (T)serializer.ReadObject(responseObjectStream);
        }
        else if (acceptHeader == "application/xml")
        {
            DataContractSerializer serializer = new DataContractSerializer(typeof(T));
            MemoryStream responseObjectStream = new MemoryStream(Encoding.UTF8.GetBytes(responseString));
            return (T)serializer.ReadObject(responseObjectStream);
        }

        return default(T);
    }
于 2012-11-21T16:06:10.007 に答える