2017-02-04 16 views
1

Web APIを使用していて、データベースにjsonオブジェクトを保存する必要があります。私は画面のサイズ、色、...を取得し、データベースに保存します。Web APIを使用してjsonをデータベースに保存し、jsonとして取得

{ "height": 1536, "width": 2048, "color": "#114521" } 

しかし、私はこのデータのC#クラスを作成したくありません。

public class Settings{ 
    public string Username {get;set;} 
    public string Data {get;set;} // This will be json settings data 
} 

私はこれをjsonオブジェクトとして取得します。

私は新しい設定C#のインスタンスを作成しています:

public Settings Get(){ 
    var settings = new Settings{ 
    Username="myname", 
    Data="{ \"height\": 1536, \"width\": 2048, \"color\": \"#114521\" }" 
    }; 
    return settings; 
} 

しかしDataは、テキストではなく、JSONオブジェクトとしてクライアントに起こっています。 (Dataを生のjsonとしてデータベースに保存します)

+0

あなたはあなたのデータベースから 'Settings'をシリアル化していますか、それとも単にWeb APIから値を返すためにDTOとして使用していますか? – dbc

+0

これはあなたの質問に答えますか? [JSONを非直列化してオブジェクトにする方法は、オブジェクトの代わりにJSONリストに変換されるように入れ子にされたjson](http://stackoverflow.com/a/40539360/3744182)。 – dbc

+0

あなたが 'DataContractJsonSerializer'の使用を有効にしているようなサウンドがあります。 https://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization#json_media_type_formatterとhttps://stackoverflow.com/questions/20371040/am-iを参照してください。 json-net-one-in-my-web-api-2を使用してデータを送信します。 – dbc

答えて

0

この例では、Jsonは文字列であり、デシリアライズされるまではオブジェクトではありません。 Settings.Dataに含まれる文字列は、挿入クエリに渡すことができます。 Json文字列全体を格納する列を持つことができます。データベースがSQL Serverの場合、varcharデータ型のmaxlengthは8000です。または、ほとんど無制限のvarchar(max)を使用できます。

だから、データベース内のJSON文字列を格納する:(まだ存在しない場合)

  1. は、データベースに値を挿入するSQL INSERT文を作成し、データ
  2. を格納する列を作成します。以下のような:

    INSERT INTO MyTable (UserName, JsonColumnName) VALUES (@userName, @JsonString) 
    
  3. アプリケーションは、データベースと対話している形式に応じて、Settings.DataからあなたのINSERT文またはSQLParameterオブジェクトに値を渡します。 、ユーザ名に基づいて、

    1. が正しいJSON文字列を見つけるために、選択状態を作成、またはユニークなものは何でもIDがJSON文字列を識別するために使用されます。

    は、データベースからJSON値を取得するには

  4. クエリ結果からjson文字列を取得します。
0

Json文字列としては表示されません。クライアントサイドでjsonにシリアライズすると、オブジェクトとして変換されます。

var obj = JSON.parse('{ \"height\": 1536, \"width\": 2048, \"color\": \"#114521\" }'); 
関連する問題