web-dev-qa-db-ja.com

WebサービスからJSONを返す方法

朝、

Webサービスからメッセージを返す必要があります。以下は私のコードのサンプルで、文字列を返しています。

[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 ;
    }

私は現在、次の応答を受け取ります...

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

私は理想的には次のようなものを返したいです

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

私はそれのアイデアを得たら、私は必要に応じて他のアイテムを返すことができると確信しています。そのちょうどこのベースは私が解決する必要があります。

前もって感謝します:)

更新:これを見つけました...

 return "{Message:'hello world'}"

次のようなものが必要ですか

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

使用:

[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 ;
    }

返される結果は次のようになります:

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

Webメソッドの属性を使用してください

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

呼び出し元は、webmethodを使用するためにcontenttypeをapplication/jsonに設定します

2
HatSoft

これはフレームワーク4.5.2の私のソリューションです。クラスFilterConfigに次のコードを追加します。注:lib Newtonsoftが必要になります。

 public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Serialize;
        GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);
        GlobalConfiguration.Configuration.EnableCors();
        filters.Add(new HandleErrorAttribute());
    }
}
0
Leonardo Mora

これを試してください:

[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;
    }
0
Ravin Singh

サービスレスポンスのXMLタグを削除するには、StackOverflowで次の回答をご覧ください。

ASP.NET WebServiceは私のJSON応答をXMLタグでラップしています

0
kalenwatermeyer