2011-01-13 13 views
3

json.netをテストしています。私はlink-to-jsonの構文を使用して、[WebMethod]の関数からjsonを返すようにしたいが、エラーが出ている。例えばJson.net:[WebMethod]からJObjectを返すにはどうしたらいいですか?

私は次のJavaScriptによって呼び出される

[WebMethod, ScriptMethod(UseHttpGet = true)] 
public static JObject GetStuff() { 
    return new JProperty("string", "value"); 
} 

の背後にあるコードで使用している場合:私は、エラーが「Newtonsoft.Json.Linq上の子の値にアクセスすることはできません取得

PageMethods.GetStuff(/* parameters */, function(data) { 
     // do stuff with data 
    }); 

。 JValue "

javascriptデータオブジェクトがJSONでいっぱいになるように戻すにはどうすればよいですか?

答えて

1

なぜ単にオブジェクトを返すと、基盤となるインフラストラクチャにJSONのシリアル化を残していない:

public class MyModel 
{ 
    public string Value { get; set; } 
} 

し、Webメソッドで:

[WebMethod, ScriptMethod(UseHttpGet = true)] 
public static MyModel GetStuff() { 
    return new MyModel { 
     Value = "some value" 
    }; 
} 
+1

基盤となるインフラストラクチャではないので、私はむしろ純粋なJSONを返します特に単純です。辞書と配列の両方を返すこともできます。辞書には頻繁に出現する項目が配列に含まれるため、JSONサイズを減らすことができます。 – sh54

+0

@ sh54では、カスタムオブジェクトを作成することで、必要なプロパティのみを含めるため、JSONサイズを減らすことができます。 –

+1

Json.Netは、辞書、データテーブルなどを処理する方法と、MSシリアライザが窒息する他のタイプを知っています...主な理由Json.Netは、VS2012 /を使用した新しいWeb API用の箱です。ネット4.5 ... – Tracker1

関連する問題