2012-07-12 35 views
7

Mañana,Cómo devolver JSON desde el servicio web

Tengo que devolver un mensaje desde mi servicio web. A continuación hay una muestra de mi código, y estoy devolviendo una cadena.

[web method] 
public string CheckFeedSubmission() 
    { 
     string responseText = ""; 
     try 
     { 
      //Stuff goes here 
      responseText = "It Worked!" 
     } 
     catch (Exception ex) { responseText = "Opps wehave an error! Exception message:" + ex.Message; } 
     return responseText ; 
    } 

Actualmente tengo la siguiente respuesta ...

<string xmlns="http://tempuri.org/"/> 

que lo ideal sería algo así como volver

{"success" : true, "message" : "***Message Here***"} 

Estoy seguro que una vez que consigo la idea de que, i podrá devolver otros artículos si es necesario. Es solo esta base que necesito para hacer ejercicio.

Toda ayuda es muy apreciada, gracias de antemano :)

ACTUALIZACIÓN: Sólo encontraron esta ...

return "{Message:'hello world'}" 

qué necesitaría algo así como

responseText = "{"success" : true, "message" : \"There has been an error. Message: " + ex.Message + "\"}" 
+0

posible duplicado de [servicio web debe volver JSON] (http://stackoverflow.com/questions/8205081/web -service-should-return-json) –

Respuesta

10

Uso:

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]//Specify return format. 
public string CheckFeedSubmission() 
    { 
     string responseText = ""; 
     try 
     { 
      //Stuff goes here 
      responseText = "It Worked!" 
     } 
     catch (Exception ex) { responseText = "Opps wehave an error! Exception message:" + ex.Message; } 
     return responseText ; 
    } 

El resultado devuelto será como:

<string xmlns="http://tempuri.org/"/> 
{"success" : true, "message" : "***Message Here***"} 
</string> 
+2

Gracias, pero como arriba sigo recibiendo cadena XML – thatuxguy

+0

En realidad, devuelve a Json dentro del XML. Debe especificar en su llamada lo que desea devolver. ¿Por qué regresa en el formato? http://haacked.com/archive/2009/06/25/json-hijacking.aspx –

+0

¿Qué hay de "funcionó"? mensaje de respuesta? – thatuxguy

2

Utilice el atributo para su WebMethod

[WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 

La persona que llama se habrá introducido una contenttype en application/json utilizar el WebMethod

+3

no funciona, solo recupera una cadena - Funcionó bien thatuxguy

0

Pruebe este:

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]//Specify return format. 
public bool addUser(UserModel um) 
    { 
     bool result = false; 
     result = Conversion.intToBool(SplashAwardsDB.executeNonQuery(
      "INSERT INTO dbo.User (" 
      + "userName, password, firstName, lastName, address, contactNo, birthDate, familyID, familyRole, x, y) " 
      + " VALUES (" 
      + "'" + um.userName + "', " 
      + "'" + um.password + "', " 
      + "'" + um.firstName + "', " 
      + "'" + um.lastName + "', " 
      + "'" + um.address + "', " 
      + "'" + um.contactNo + "', " 
      + "'" + um.birthDate + "', " 
      + "'" + um.familyID + "', " 
      + "'" + um.familyRole + "', " 
      + "'" + um.x + "', " 
      + "'" + um.y + "')" 
      )); 
     return result; 
    } 
Cuestiones relacionadas