JSONオブジェクトはnull応答をスローしますが、nullではありません

user3803747

を使用してJSONオブジェクトを解析しようとしJavaScriptSerializer().Deserializeましたが、foreach (var item in getRoute.results)どこでnullエラーがスローされましたRoute getRoute = new JavaScriptSerializer().Deserialize<Route>(strresulttest);

strresulttest内容を印刷してデバッグしたところ、https://codeshare.io/5vM6X4に示すように期待されるJSON出力を確認できました

JSONを解析するコード:

     public class Route
    {
        public List<GetRoute> results { get; set; }
    }

    public class GetRoute
    {
        public string status_message { get; set; }
        public string viaRoute { get; set; }
        public string subtitle { get; set; }
        public int totalTime { get; set; }
        public int totalDistance { get; set; }
    }

    private void GetInstructions()
    {
        //GET METHOD for route query
        string strurltest = String.Format("https://developers.onemap.sg/privateapi/routingsvc/route?start="+
            startLat+","+ startLon +"&end="+ destinationLat +","+ destinationLon+"&"+
            "routeType="+ transportType + "&token="+token);
        WebRequest requestObjGet = WebRequest.Create(strurltest);
        requestObjGet.Method = "GET";
        HttpWebResponse responseObjGet = null;
        responseObjGet = (HttpWebResponse)requestObjGet.GetResponse();
        string strresulttest = null;
        using (Stream stream = responseObjGet.GetResponseStream())
        {
            StreamReader sr = new StreamReader(stream);
            strresulttest = sr.ReadToEnd();
            //reminder: remove after prod. GET is working.
            System.Diagnostics.Debug.WriteLine(strresulttest);
            sr.Close();
        }

        //display search recommendations
        Route getRoute = new JavaScriptSerializer().Deserialize<Route>(strresulttest);
        foreach (var item in getRoute.results)
        {
                //reminder: remove after prod. 
                System.Diagnostics.Debug.WriteLine("Route via: " + item.viaRoute + "\n");
                System.Diagnostics.Debug.WriteLine("Description: " + item.subtitle + "\n");
        }
    }

期待されるJSON出力(の場合に表示System.Diagnostics.Debug.WriteLine(strresulttest);):

{
"status_message": "Found route between points",
"route_geometry": "m{`G_cyxRaAmALMtAyAj@g@RIZG|@KTC??RCxBQ\\KAOa@sDAQWwBM_AUmBEa@Ky@_@kDKoAIgAAs@Ce@?M|@_@PINUFk@Ik@e@aCu@wBeBoD_A}AmBqC{@iA_AeAyAqA{LmKmAu@k@g@y@Jk@r@k@r@GP@PFJhAt@oEnGw@i@QTMPs@g@}AzBr@d@JQ",
"status": 0,
"route_instructions": [
    [
        "Head",
        "SINARAN DRIVE",
        56,
        "1.320394,103.844478",
        18,
        "56m",
        "North East",
        "North",
        "driving",
        "Head Northeast On Sinaran Drive"
    ],
    [
        ...
    ],
    ...
],
"route_name": [
    "MOULMEIN ROAD",
    "WHAMPOA ROAD"
],
"route_summary": {
    "start_point": "SINARAN DRIVE",
    "end_point": "WHAMPOA ROAD",
    "total_time": 390,
    "total_distance": 2675
},
"viaRoute": "JALAN BAHAGIA",
"subtitle": "Fastest route, assuming usual traffic",
"phyroute": {
    "status_message": "Found route between points",
    "route_geometry": "m{`G_cyxRaAmALMtAyAj@g@RIZG|@KTC??Ao@BcB?kCBIHK|Ay@M_AUmBEa@Ky@_@kDKoAIgAAs@Ce@?M?OBw@BsCEq@Q{@Qm@KQGMaCNM@iFXO?sCNo@LCa@QaICe@EI?EBQTi@Ha@@c@CMGWOYOOgEgD{BeBuB}AoEnGw@i@QTMPs@g@}AzBr@d@JQ",
    "status": 0,
    "route_instructions": [
        [
            "Head",
            "SINARAN DRIVE",
            56,
            "1.320394,103.844478",
            18,
            "56m",
            "North East",
            "North",
            "driving",
            "Head Northeast On Sinaran Drive"
        ],
        [
            ...
        ],
        ...
    ],
    "route_name": [
        ...
    ],
    "route_summary": {
        ...
    },
    "viaRoute": "BALESTIER ROAD",
    "subtitle": "Shortest distance"
}
}
ブライアンロジャース

resultsデシリアライズするクラス構造がJSONと一致しないため、nullが発生します。質問でリンクしたJSONは、代わりにこのクラス構造に対応しています。

public class Route
{
    public string status_message { get; set; }
    public string route_geometry { get; set; }
    public int status { get; set; }
    public List<List<object>> route_instructions { get; set; }
    public List<string> route_name { get; set; }
    public RouteSummary route_summary { get; set; }
    public string viaRoute { get; set; }
    public string subtitle { get; set; }
    public Phyroute phyroute { get; set; }
}

public class RouteSummary
{
    public string start_point { get; set; }
    public string end_point { get; set; }
    public int total_time { get; set; }
    public int total_distance { get; set; }
}

public class Phyroute
{
    public string status_message { get; set; }
    public string route_geometry { get; set; }
    public int status { get; set; }
    public List<List<object>> route_instructions { get; set; }
    public List<string> route_name { get; set; }
    public RouteSummary route_summary { get; set; }
    public string viaRoute { get; set; }
    public string subtitle { get; set; }
}

デシリアライズしてviaRoute、次のsubtitleように取得できます

Route route = new JavaScriptSerializer().Deserialize<Route>(strresulttest);
System.Diagnostics.Debug.WriteLine("Route via: " + route.viaRoute);
System.Diagnostics.Debug.WriteLine("Description: " + route.subtitle);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Firebase関数がエラーをスローしますcom.google.firebase.functions.FirebaseFunctionsException:応答が有効なJSONオブジェクトではありません

分類Dev

「応答は有効なJSONオブジェクトではありません」を返すFirebase機能

分類Dev

応答XMLHttpRequestをjavascripを使用してJSONに変換しますが、オブジェクトはnullです

分類Dev

Flatlist keyExtractorは、データがnullの場合、「TypeError:nullはオブジェクトではありません」を返します。

分類Dev

オブジェクトはメソッドではnullですが、クラスではありません

分類Dev

Json文字列(応答)をjsonオブジェクトに変換しようとしましたが、JSONSerialization後の出力が明確ではありません

分類Dev

Nestアプリケーションをブートストラップできません。「TypeError:オブジェクトのプロトタイプはオブジェクトのみであるか、null:未定義である可能性があります」

分類Dev

BucketIteratorは「Field」オブジェクトをスローしますが、「vocab」属性はありません

分類Dev

TypeError:nullはオブジェクトではありません( 'arr.push'を評価しています)

分類Dev

nullはオブジェクトではありません(this.state.countを評価します)

分類Dev

nullはオブジェクトではありません( '_RNGestureHandlerModule.default.Direction'を評価します)

分類Dev

React Native:nullはオブジェクトではありません( '_this.state.displayErrors'を評価しています)

分類Dev

電話番号を検証しています。Null はオブジェクトではありません

分類Dev

nullはオブジェクトではありません:(this.state.emailを評価します)

分類Dev

NullはAJAXを持ち、部分的なページを取得するオブジェクトではありません

分類Dev

「ScrollTop」がnullであるか、オブジェクトではありません

分類Dev

エラー:応答は、onCallを使用したFirebase関数の有効なJSONオブジェクトではありません

分類Dev

「:ターゲットオブジェクトがnullであってはなりませんjava.lang.IllegalArgumentExceptionが」ローカルホストでの入力を与えている間、なぜ私は例外を取得していますか?

分類Dev

ServiceStackサービスは、JsonとXMLの両方として動的応答オブジェクトを返すことができません

分類Dev

Javascriptオブジェクトがnullであるか、IEのオブジェクトではありません

分類Dev

エラー:Nullはオブジェクトではありません

分類Dev

C ++オブジェクトはnullではありませんが、その内容は壊れていますか?

分類Dev

nullの日時オブジェクト値ですが、値はまだnullをスローしています

分類Dev

ランタイムエラー:クラスは値を拡張します[オブジェクトオブジェクト]はコンストラクターまたはnullではありません

分類Dev

MySQL-オブジェクトがnullではありませんか?

分類Dev

Hibernate findAll(example)が「java.lang.IllegalArgumentException:ターゲットオブジェクトをnullにすることはできません」をスローします

分類Dev

Reactナビゲーション、ルートデータが「未定義はオブジェクトではありません」をスローしています

分類Dev

バックボーンビュー関数がTypeErrorをスローします:オブジェクトは関数ではありません

分類Dev

React Nativeアプリがリリースモードでクラッシュし、次のエラーが発生しますnullはオブジェクトではありません( 's.drawer._root'を評価しています)

Related 関連記事

  1. 1

    Firebase関数がエラーをスローしますcom.google.firebase.functions.FirebaseFunctionsException:応答が有効なJSONオブジェクトではありません

  2. 2

    「応答は有効なJSONオブジェクトではありません」を返すFirebase機能

  3. 3

    応答XMLHttpRequestをjavascripを使用してJSONに変換しますが、オブジェクトはnullです

  4. 4

    Flatlist keyExtractorは、データがnullの場合、「TypeError:nullはオブジェクトではありません」を返します。

  5. 5

    オブジェクトはメソッドではnullですが、クラスではありません

  6. 6

    Json文字列(応答)をjsonオブジェクトに変換しようとしましたが、JSONSerialization後の出力が明確ではありません

  7. 7

    Nestアプリケーションをブートストラップできません。「TypeError:オブジェクトのプロトタイプはオブジェクトのみであるか、null:未定義である可能性があります」

  8. 8

    BucketIteratorは「Field」オブジェクトをスローしますが、「vocab」属性はありません

  9. 9

    TypeError:nullはオブジェクトではありません( 'arr.push'を評価しています)

  10. 10

    nullはオブジェクトではありません(this.state.countを評価します)

  11. 11

    nullはオブジェクトではありません( '_RNGestureHandlerModule.default.Direction'を評価します)

  12. 12

    React Native:nullはオブジェクトではありません( '_this.state.displayErrors'を評価しています)

  13. 13

    電話番号を検証しています。Null はオブジェクトではありません

  14. 14

    nullはオブジェクトではありません:(this.state.emailを評価します)

  15. 15

    NullはAJAXを持ち、部分的なページを取得するオブジェクトではありません

  16. 16

    「ScrollTop」がnullであるか、オブジェクトではありません

  17. 17

    エラー:応答は、onCallを使用したFirebase関数の有効なJSONオブジェクトではありません

  18. 18

    「:ターゲットオブジェクトがnullであってはなりませんjava.lang.IllegalArgumentExceptionが」ローカルホストでの入力を与えている間、なぜ私は例外を取得していますか?

  19. 19

    ServiceStackサービスは、JsonとXMLの両方として動的応答オブジェクトを返すことができません

  20. 20

    Javascriptオブジェクトがnullであるか、IEのオブジェクトではありません

  21. 21

    エラー:Nullはオブジェクトではありません

  22. 22

    C ++オブジェクトはnullではありませんが、その内容は壊れていますか?

  23. 23

    nullの日時オブジェクト値ですが、値はまだnullをスローしています

  24. 24

    ランタイムエラー:クラスは値を拡張します[オブジェクトオブジェクト]はコンストラクターまたはnullではありません

  25. 25

    MySQL-オブジェクトがnullではありませんか?

  26. 26

    Hibernate findAll(example)が「java.lang.IllegalArgumentException:ターゲットオブジェクトをnullにすることはできません」をスローします

  27. 27

    Reactナビゲーション、ルートデータが「未定義はオブジェクトではありません」をスローしています

  28. 28

    バックボーンビュー関数がTypeErrorをスローします:オブジェクトは関数ではありません

  29. 29

    React Nativeアプリがリリースモードでクラッシュし、次のエラーが発生しますnullはオブジェクトではありません( 's.drawer._root'を評価しています)

ホットタグ

アーカイブ