10

次の生のJsonデータをstring含む(質問のために単純化されています):

  var MyString =  "{ 'val': 'apple' }";

JsonResultを表すオブジェクトを作成するにはどうすればよいMyStringですか?

Json(object) メソッドを使ってみました。ただし、生のjsonデータを文字列として処理します-論理的に:P-。したがって、返される HTTP 応答は次のようになります。

"{ 'val': 'apple' }"

指定された生の Json データの代わりに:

{ 'val': 'apple' }

これが私が達成したいことです:

4

3 に答える 3

24

Json()メソッド onは、Controller実際には新しい を作成するヘルパー メソッドですJsonResultこのクラス*のソース コードを見ると、実際にはそれほど多くのことを行っていないことがわかります。コンテンツ タイプを に設定し、application/jsonを使用してデータ オブジェクトをシリアル化JavaScriptSerializerし、結果の文字列を書き込むだけです。これを複製できます。ContentResult代わりにコントローラーからa を返すことで、動作 (既に行っているため、シリアライゼーションを差し引いたもの) 。

public ActionResult JsonData(int id) {
    var jsonStringFromSomewhere = "{ 'val': 'apple' }";
    // Content() creates a ContentResult just as Json() creates a JsonResult
    return Content(jsonStringFromSomewhere, "application/json");
}

* MVC2 以降でJsonResultは、ユーザーが (POST とは対照的に) HTTP GET 要求を行っている場合にも例外がスローされます。ユーザーが HTTP GET を使用して JSON を取得できるようにすることには、セキュリティ上の影響があり、独自のアプリでこれを許可する前に注意する必要があります。

于 2010-10-21T21:07:14.097 に答える
1

文字列から json データを生成する方法JavaScriptResultは、コントローラーで使用することです。

public JavaScriptResult jsonList( string jsonString)
{
   jsonString = "var jsonobject = new Array(" + jsonString + ");";
   return JavaScript(jsonString)
}

次に、json 文字列をコントローラーのそのアクションに渡すように要求すると、結果は JavaScript ヘッダーを含むファイルになります。

于 2010-10-21T21:01:20.420 に答える
0

これには JavaScriptSerializer クラスを使用できると思います

var js = new System.Web.Script.Serialization.JavaScriptSerializer();
var jsonObject = js.Deserialize("{ 'val': 'apple' }", typeof(object));
于 2010-10-21T20:54:00.827 に答える