2013-04-17 17 views
6

ich eine C# .NET-Methode habe, wie untenJson Objekt in C# .net

gegeben
public string jsonTest() 
     { 
      List<string> list = new List<string>(); 
      list.Add("aa"); 
      list.Add("bb"); 
      list.Add("cc"); 
      string output = JsonConvert.SerializeObject(list); 
      return output;   
     } 

Hier eventhough Im ein Json-Objekt erstellt von JsonConvert.SerializeObject mit mir einen String bekommen (da Rückgabetyp ist string) .

Kann ich tun, wie unten mit einem Rückgabetyp JsonResult (oder etwas ähnliches) etwas, was wir in MVC tun können?

return Json(new { data = list }, JsonRequestBehavior.AllowGet); 

Ist es möglich, eine Json-Daten in asp.net zu erstellen?

In Client-Seite verwende ich einen Ajax-Aufruf, um Daten von JsonTest() zu erhalten.

$.ajax({ 
       type: 'GET', 
       url: "test.aspx", //In test.aspx pageload calling jsonTest() 
       dataType: 'json', 
       success: function (data) { 
        alert(data); 
       }, 
       error: function (data) { 
        alert("In error"); 
       } 

      }); 

Wenn ich datatype gebe: ‚json‘, wird es geht einem Fehler (Da die Ajax-JSON-Daten erwartet, aber es wird string). Deshalb möchte ich es als ein JSON-Objekt auf Serverseite analysieren.

+0

Wollen Sie es so, dass für die serverseitige Verbrauch oder clientseitige? Was versuchst du mit dem Ergebnis zu erreichen? –

+0

Wenn Sie in der Lage sind, eine Asp-Webmethode zu erstellen, geben Sie den Typ der Zeichenfolge zurück und verwenden den Json-Serializer zum Konvertieren des Objekts – cgatian

+0

http://stackoverflow.com/questions/2361380/how-do-i-server-ajax-calls-using -json-with-web-forms –

Antwort

-3

Json ist nur String-Daten. So wird diese Zeichenfolge interpretiert. Die Tatsache, dass eine Zeichenkette zurückgegeben wird, ist also korrekt. Sie haben ASP.Net erwähnt. Verwenden Sie ASP.Net-Webforms und suchen nach einer Möglichkeit, das JSON an die Vorderseite zurückzugeben?

+0

Ich glaube, Sie möchten einen Kommentar abgeben – cgatian

+0

Warum der Downvote? – uriDium

0

Es wird nichts als JSON-Objekt bezeichnet. Die SerializeObject-Methode gibt eine Zeichenfolge zurück, da JSON nichts anderes als ein Zeichenfolgenwert ist, der bestimmten Regeln folgt.

JSON Um zum Browser alles, was Sie tun müssen, ist:

Response.ContentType = "application/json; charset=utf-8"; 
Response.Write(jsonTest()); 
Response.End(); 
1

Wenn ASP.NET,

string output = JsonConvert.SerializeObject(list); 
Response.Clear(); 
Response.ContentType = "application/json; charset=utf-8"; 
Response.Write(output); 
Response.End(); 
+0

Es funktioniert gut, wenn ich nicht DataType: 'Json' in Ajax. Sonst zeigt es Alarm ("In Fehler"); – Sudha

0

ich Sie versuchen, eine WebMethod zu übernehmen werde erstellen Zur Verwendung mit einem JavaScript XHR-Aufruf oder ähnlich:

ASP.NET wird automatisch für JSON für POST Anforderungen (mit ASMX oder so genannte "Page Methoden"). WCF und WebAPI erfordern die Methode POST nicht, erfordern jedoch einige Konfiguration.

[WebMethod] 
public static List<Task> TasksGet(string projectId) { 
    return MyNamespace.Tasks.GetForProject(projectId); 
} 

Das Ergebnis Ihres JS Aufruf wie wäre etwas sieht:

{"d": [{ 
    "__type": "MyNamespace.Task", 
    "id": 1, 
    "description": "This is my first task" 
    }, { 
    "__type": "MyNamespace.Task", 
    "id": 2, 
    "description": "This is my second task" 
    }, { 
    ....etc etc 
    } 
]} 

Keine Notwendigkeit, mess around w/die JsonSerializer Klasse direkt.

Auch stellen Sie sicher, dass Ihre Anfrage-Header korrekt eingestellt sind:

Content-Accept: application/json;charset=UTF8