私はこれに対する答えを高くして検索し、最終的に見つけました。
それは、WCF RESTサービスである:
私は同じ問題が発生して誰のために共有することになります。
WCFとAndroidを同時に学習すると、WCFの応答はJson形式でシリアル化されたStringでなければならないと私は考えました。
これを行うには、.Netオブジェクト、配列など、DataContractJsonSerializerを経由してさらに解析するためにStringとして返される前のもの。このような
何か:
Dim stream1 As MemoryStream = New MemoryStream
Dim ser As DataContractJsonSerializer = New DataContractJsonSerializer(GetType(myType))
ser.WriteObject(stream1, myThing)
Dim _json As String = Encoding.UTF8.GetString(stream1.ToArray())
stream1.Close()
return _json
間違いました。
オブジェクト、配列などを保持して代わりに返します。 WCFは適切なエスケープ処理を行います。
たとえば、これはVBです。
IService:
<OperationContract()> _
<WebGet(BodyStyle:=WebMessageBodyStyle.WrappedRequest, RequestFormat:=WebMessageFormat.Json, ResponseFormat:=WebMessageFormat.Json, UriTemplate:="/MyKit/{AccountID}")> _
Function GetKit(ByVal AccountID As String) As MyKit
サービス:効果的WCFから「事前エスケープのデータをAndroidにJSONとして送信するためDataContractJsonSerializerを使用して
Public Function GetKit(ByVal AccountID As String) As MyKit Implements IService1.GetKit
Dim allKit As New MyKit() //Your object
objDal.CommandText = 'run some sql here - or whatever
Using dr As SqlDataReader = "blah"
//populate your object
End Using
Return allKit //return the object, not the string representation of it
End Function
。Androidに到達すると、Jsonパーサーはデータをエスケープするため、これを処理できません。