1

私はこのような他の質問を研究しましたが、正しいことをしていません。私のvb.netクラスが間違っているか何かです。私のクラスは、候補者からのみ代表しようとするべきですか、それとも何ですか? このjsonの逆シリアル化について助けが必要です:

{
  "spatialReference" : {
    "wkid" : 2286
  },
  "candidates" : [
    {
      "address" : "100 MAIN ST",
      "location" : {
        "x" : 1144782.9490543604,
        "y" : 81361.525678694248
      },
      "score" : 100,
      "attributes" : {

      }
    },
    {
      "address" : "100 E MAIN ST",
      "location" : {
        "x" : 1120908.3257195801,
        "y" : 169917.71846333146
      },
      "score" : 77,
      "attributes" : {

      }
    }
  ]
}

次のコードを使用して逆シリアル化しています。

Public Shared Function Deserialise(Of T)(ByVal json As String) As T
      Dim obj As T = Activator.CreateInstance(Of T)()

      Using ms As MemoryStream = New MemoryStream(Encoding.Unicode.GetBytes(json))
         Dim serializer As DataContractJsonSerializer = New       DataContractJsonSerializer(obj.GetType())
         obj = serializer.ReadObject(ms)
         Return obj
      End Using
   End Function

そして、私の vb.net クラスは次のようになります。

<DataContract()> _
Public Class SearchResults
   Private mCandidates() As candidate

   <DataContract()> _
   Public Class SpatialReference
      Private mwkId As String


      <DataMember()> _
      Public Property wkid() As String
         Get
            Return mwkId
         End Get
         Set(ByVal value As String)
            mwkId = value
         End Set
      End Property
   End Class

   <DataMember()> _
   Public Property Candidates() As candidate()
      Get
         Return mCandidates
      End Get
      Set(ByVal value As candidate())
         mCandidates = value
      End Set
   End Property
End Class

<DataContract()> _
   Public Class candidate
   Private mAddress As String
   Private mLocation As Location
   Private mScore As String
   Private mAttr As String

   <DataMember()> _
Public Property address() As String
      Get
         Return mAddress
      End Get
      Set(ByVal value As String)
         mAddress = value
      End Set
   End Property

   <DataMember()> _
   Public Property location() As Location
      Get
         Return mLocation
      End Get
      Set(ByVal value As Location)
         mLocation = value
      End Set
   End Property

   <DataMember()> _
   Public Property score() As String
      Get
         Return mScore
      End Get
      Set(ByVal value As String)
         mScore = value
      End Set
   End Property

   <DataMember()> _
   Public Property attributes() As String
      Get
         Return mAttr
      End Get
      Set(ByVal value As String)
         mAttr = value
      End Set
   End Property
End Class
4

1 に答える 1

0

私は .net を知りませんが、JAVA に関連していると言えます。これを.Netに関連付けることができます

クラス オブジェクトを json に、または json からシリアライズまたはデシリアライズする必要がある場合は、Gson が必要です。

Java では、通常、パッケージ Gson パッケージをインポートして、そのオブジェクトを作成します。たとえば、次のようになります。

オブジェクトをシリアライズしたいクラス User があるとします。これを行うには

Gsonの助けを借りて、オブジェクト全体をJSONに変換し、キー名を付けます

jsonObject.put("KEYFORTHISjsonObject", gson.toJson(userClassObject));

これで、JSON にシリアル化されましたが、逆シリアル化しながら

ur User オブジェクトを作成するだけです。JsonファイルからJsonオブジェクトを取得

JSONObject jsonObject = new JSONObject(jsonFile.toString())
    userObject2 =  gson.fromJson(jsonObject.toString(), User.class);

したがって、userObject2 には、以前にシリアル化したすべての値が含まれています。

JAVA に慣れていない場合は、Gson for .net について読むか、このリンクを読むこともできますhttp://james.newtonking.com/projects/json-net.aspx

于 2012-11-14T18:12:40.297 に答える