从android解析jsonObject并在webservice vb.net中获取它

Posted

技术标签:

【中文标题】从android解析jsonObject并在webservice vb.net中获取它【英文标题】:Parse jsonObject from android and get it in webservice vb.net 【发布时间】:2020-04-18 21:30:52 【问题描述】:

我已经解决了问题,

我认为我的问题是我不知道如何在 webservice .NET 中获取 JSON

我使用 android studio 将 JSON 对象解析到我的网络服务,JSON 数组和 JSON 对象正在工作,

但我收到了一个错误的请求(可能是因为我无法在 web 服务中获取 JSON?)

            JSONObject jsonObject = new JSONObject();
            jsonObject.put("horary", jsonArray);
            URL url = new URL("URL");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setConnectTimeout(4000);
            conn.setRequestProperty("Content-Type", "application/json");
            conn.setRequestProperty("Accept","application/json");
            conn.setDoOutput(true);
            DataOutputStream os = new DataOutputStream(conn.getOutputStream());
            os.writeBytes(URLEncoder.encode(jsonObject.toString(), "UTF-8"));
            os.flush();
            os.close();
            Log.d("json", conn.getResponseMessage());<- bad Request

这是我来自 webservice vb.net 的代码。我不知道如何获取 JSON 对象

     <WebInvoke(ResponseFormat:=WebMessageFormat.Json, UriTemplate:="Change/")>
        Function HReceiver(horary As String) As String Implements IService.HReceiver

我想我用 (horary As String) 得到 JSON,我尝试了很多方法来反序列化,

但这不是重点,因为我想我无法获取 JSON

            Dim ser As javascriptSerializer = New JavaScriptSerializer()
            Dim horary As ArrayHorary
            Dim result As String
            Try
                Dim items = Newtonsoft.Json.JsonConvert.DeserializeObject(Of ArrayHorary())(horary)
                result = horary.ToString
            Catch ex As Exception
                result = ex.ToString
            End Try
            Return result
        End Function

        Public Class ArrayHorary
            Public Property id As String
            Public Property name As String
        End Class

感谢您的时间

------------我解决了

<OperationContract()>
    Function HReceiver(horary As Horar) As String

    <DataContract()>
Public Class Horar
    <DataMember()>
    Public Property horary As List(Of Horari)
End Class

    <DataContract()>
Public Class Horari
    <DataMember()>
    Public Property id As String
    <DataMember()>
    Public Property name As String

End Class

服务中

<WebInvoke(ResponseFormat:=WebMessageFormat.Json, UriTemplate:="Change/")>
    Function HReceiver(horar As Horar) As String Implements IService.HReceiver
        Dim result As String

        result = horar.horary(0).name
return result

而且这项工作没有反序列化器

在android中,我必须使用

os.writeChars(URLEncoder.encode(jsonObject.toString(), "UTF-8"));

【问题讨论】:

【参考方案1】:

要以正确的方式接收 JSON 对象,您必须有一个与函数参数具有相同结构的类,例如,如果您正在接收此对象的列表,您的 api 参数应该是:

Function SpoolsList(objVar As List(Of ArrayHorary)) As IHttpActionResult
    Your code
End Function

然后它会自动解析对象。

【讨论】:

谢谢,所以我需要 repalce (horary As String) 并在界面中添加此方法,并在界面中添加 ArrayHorary,如 尝试始终接收具有适当类的 JSON 对象,这将为您节省大量时间,.net 将为您完成工作,您只需按原样使用类对象。 如果此答案对您有所帮助,请将其标记为正确,以便其他人可以从中受益。 当我使用 objVar 作为 Array / 或 arraylist 时,长度为“0”,看起来我在 objVar 中没有任何内容

以上是关于从android解析jsonObject并在webservice vb.net中获取它的主要内容,如果未能解决你的问题,请参考以下文章

无法解析符号 JSONObject (Android Studio)

在Android中解析嵌套的JSONObject [重复]

如何在 android 中使用改造来解析这个 web 服务?

Android JSON解析使用Web服务查看古吉拉特语字符

从 JSON 检索数据但无法从 JSONobject 访问 Arraylist

从 URL 解析 Swift 4 中的 JsonObject