Web Services JSON是用类名 Package 的,如何获取原始JSON内部数据

niknxzdl  于 2023-04-06  发布在  其他
关注(0)|答案(1)|浏览(147)

我现在正在构建一个webservice,我想在android应用程序中使用它。我面临的问题是,应该返回字符串(json)的webservice方法与方法名称(Login)相关联。我试图搜索这个问题,虽然我认为我不是第一个遇到这个问题的人,但我什么也没找到。
我的json变量看起来像这样:

json = "{ \"UserID\": \"" + login.UserID + "\", \"Salutation\": \"" + webUser.Salutation + "\", \"Title\": \"" + webUser.Title + "\", \"Name\": \"" + webUser.Name + "\", \"Lastname\": \"" + webUser.Lastname + "\" } ";

然后再返回。
但是当我通过Postman或我的Android应用程序消费它时,它看起来像这样:

{ "LoginResult": { \"UserID\": \"" + login.UserID + "\", \"Salutation\": \"" + webUser.Salutation + "\", \"Title\": \"" + webUser.Title + "\", \"Name\": \"" + webUser.Name + "\", \"Lastname\": \"" + webUser.Lastname + "\" }}

这是我不想要的行为,我找不到任何关于如何阻止这种行为的信息。
我怎样才能让我的Webservice只返回我写的字符串而不是连接在一起的methodname?
因为我真的无法理解为什么会发生这种情况,所以我只是搜索是否可以在某个地方配置这种行为,但我什么也没找到。
编辑:我不认为,这真的会改变很多,但正如它被问到的,这里是完整的方法有点模糊:

public string Login(string username, string passwort)
        {
            string json = "error";
            try
            {
                var login = Namespace.ViewModels.LoginData.SelectByUserNamePassword(username, passwort);
                Namespace.Models.WebAppUser webUser = new Namespace.Models.WebAppUser();
                lock (webUser)
                {
                    webUser = new Namespace.Controllers.ApplicationController().setWebUserT(Convert.ToInt32(login.UserID), Convert.ToInt32(login.BetriebID), login.BetriebTyp, login.SessionID, login.UniqueID, login.DBName);
                }

                if (webUser != null && webUser.UserID != -1)
                {
                    json = "{ \"UserID\": \"" + login.UserID + "\", \"Salutation\": \"" + webUser.Salutation + "\", \"Title\": \"" + webUser.Title + "\", \"Name\": \"" + webUser.Name + "\", \"Lastname\": \"" + webUser.Lastname + "\" }";
                }
            }
            catch (Exception ex)
            {
                SimpleLogger.Exception(ex);
            }
            return json;
        }
zour9fqk

zour9fqk1#

我终于找到了答案。
在派生Serviceclass.svc的接口中,有一个我忽略的指定格式。
[WebInvoke(Method =“GET”,UriTemplate =“Login?username={username}&passwort={passwort}",RequestFormat = WebMessageFormat.Json,ResponseFormat = WebMessageFormat.Json,BodyStyle = WebMessageBodyStyle.Wrapped)] string Login(string username,string passwort);
在这里,我将包含请求的BodyStyle = WebMessageBodyStyle.Wrapped更改为:
BodyStyle = WebMessageBodyStyle.Bare
并且它不再将方法的名称包含到我的JSON响应中。

相关问题