2011-12-21 12 views
0

私の以前の質問を確認すると、Androidの「\」または「/」に関連していて、他のコードの実装が動作しない理由がわかります人々のバージョンはjson、wcfと文字列の端数

なぜ私が働いていないのか分かりました。

live client私はコンテンツ管理システムへのアクセス権を持ち、そこからデータを取得しています。一般的な小切手以外に、彼らはサイトに必要なものを投稿することができます。

サイズはインチ単位で掲載されています。例えば5-1/2

これはこれだけで、私のRestful jsonを台無しにしています。例えば

、1つの8番目は現在、私はこれらの「フラクション」をキャッチし、ちょうどので、私は開発を継続することができ小数にそれらを回すためにWCF時点で文字列の書き換えを行っています

1\\\/8 

となっています。しかし、私はすべての出来事をコード化することはできません。そして、Android/Eclipseは失敗します。JSONArray json=new JSONArray(result);

これに関するご意見はありがとうございます。

デイブ

答えて

0

私はこれに対する答えを高くして検索し、最終的に見つけました。

それは、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パーサーはデータをエスケープするため、これを処理できません。

0

反射、さらに調査では、それが問題の原因エスケープ画分ではありません。 これはもっと基本的なものです。 質問を終了します。