2

.Net で JSON からオブジェクトのリストを逆シリアル化するためのクラスを作成する方法がわかりません。

JSON 仕様から、これが有効な JSON であることがわかります。

   [
      {
         "precision": "zip",
         "Latitude":  37.7668,
         "Longitude": -122.3959,
         "Address":   "",
         "City":      "SAN FRANCISCO",
         "State":     "CA",
         "Zip":       "94107",
         "Country":   "US"
      },
      {
         "precision": "zip",
         "Latitude":  37.371991,
         "Longitude": -122.026020,
         "Address":   "",
         "City":      "SUNNYVALE",
         "State":     "CA",
         "Zip":       "94085",
         "Country":   "US"
      }    ]

そこで、デシリアライゼーションを処理するためにこのクラスを構築しました。

using System;
using System.Collections.Generic;
using System.Web.Script.Serialization;

namespace JsonRfc{

[Serializable]
public class Location {

    public string Precision;
    public double Latitude;
    public double Longitude;
    public string Address;
    public string City;
    public string State;
    public string Zip;
    public string Country;

    public Location(){}

    public static Location DeserializedJson(string responseJson)
    {
        JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
        return jsSerializer.Deserialize<Location>(responseJson);
    }
}

[Serializable]
public class Locations {

    public List<Location> Location;

    public Locations(){}

    public static Locations DeserializedJson(string responseJson)
    {
        JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
        return jsSerializer.Deserialize<Locations>(responseJson);
    }
}
}

メソッドに有効な Json が渡されているにもかかわらず、逆シリアル化されたオブジェクトが null です。

私が試したその他の失敗したことには、 Locations をリストではなく配列にすること (したがって、 public Location[] Location; )、および Json に場所の配列が含まれている場合でも場所への逆シリアル化が含まれます。

では、.Net 開発者はオブジェクトの配列をどのように逆シリアル化する必要があるのでしょうか? 上記が機能することを期待していましたが、機能しません。

4

1 に答える 1