nullでJSON Exceptionになるのを避ける

Android
Java

APIなどを作っているときに、やたらとJSON Exceptionが起こるので、イヤになっちゃう人もいるはず…

たとえば、intが返ってくるはずだったAPIがnullだったりすると、

json.JSONException: Value null at weight of type org.json.JSONObject$1 cannot be converted to int

となって、JSONExceptionがおこっちゃいます。

次のようにしてもムダです。

 JSONObject row = delivery_array.getJSONObject(i);
 if(row.getInt("weight")!=null) {
        weight = row.getInt("weight");
 }
 row.getInt("weight")

の時点でweightがnullだとJSONExceptionになっちゃうからです。

この値はnullになりそうだ、という場合は先にisNullでnullじゃないかを判定しておきましょう。

 JSONObject row = delivery_array.getJSONObject(i);
 if(!row.isNull("weight")) {
        weight = row.getInt("weight");
 }

追記(2016/11/15)というよりこっから先のほうが参考になるかも

実は、JSONObjectにoptStringとかoptIntという関数があるようです!

https://developer.android.com/reference/org/json/JSONObject.html#optString(java.lang.String)

知らなかったー!!
これを使えば、このキーのJSON自体が存在しない場合、nullなどを返してくれるので、JSONExceptionでブチ落ちて即死という事態を防げます。

(参考)JSON: the difference between getString() and optString()
http://stackoverflow.com/questions/13790726/json-the-difference-between-getstring-and-optstring/13790789

Googleのサンプルコード見てて、この関数の存在に気づきました。

nslookup+で+DNS+サーバーを指定する

Dreamweaver リンクチェック

現在はAdobe(アドビ)という会社が出している、Web作成ソフト。
昔はMacromediaという会社が作ってましたが、アドビがMacromediaを買収したので、今はアドビのソフトです。

今のところ、定価で5万円ぐらいします。
「Adobe 製品情報」
http://www.adobe.com/jp/products/dreamweaver/

nslookup を使用する

Windows 中級者向け情報

NSLOOKUP コマンドとは

nslookup コマンドを使用すると、IPアドレスからホスト名を調べたり、ホスト名からIPアドレスを調査することができます。

このコマンドを使用することによって、インターネットが見られない場合などに、トラブルの状態を把握することができます。

使い方

  1. コマンドプロンプトを使用する のページを参考に、コマンドプロンプトの画面を表示させます。
  2. 出てきた画面で以下のように入力します
  3.  nslookup (エンターキーを押す)
    

    ~
    正常に終了すると以下のような画面が表示されます。

     c:\>nslookup
     Default Server: dns.example.com
     Address:  192.168.1.1
     >
    

    ~
    上記の画面が表示された後、調査したいIPアドレスまたは、ホスト名を入力します。
    ~

     > www.example.com
     Name:    www.example.com
     Addresses:  192.168.100.101
    

    ~
    上記の例では、 www.example.com のIPアドレスが 192.168.100.101 であることを示しています。

    ※なお、Windows XP SP2 を使用している場合や、ファイアーウォールソフトを導入している場合は、上記のような結果が出ない場合があります。

nslookup の様々な使い方

Windows 中級者向け情報

NSLOOKUP コマンドとは

nslookup コマンドを使用すると、IPアドレスからホスト名を調べたり、ホスト名からIPアドレスを調査することができます。

このコマンドを使用することによって、インターネットが見られない場合などに、トラブルの状態を把握することができます。

基本的な動作については、nslookup を使用するを参照してください

検索対象を指定する

  1. コマンドプロンプトで nslookup を実行します
  2.  nslookup (エンターキーを押す)
    

    ~

    1. 対話形式になったら、set type=X と入力します。※Xに入る文字列は以下の通りです。

    ,A
    ,ANY
    ,CNAME
    ,MX
    ,NS
    ,PTR
    ,SOA
    ,SRV
    ~

     > set type=mx
     > example.com
     >         primary name server = dns1.icann.org
     >         responsible mail addr = hostmaster.icann.org
     >         serial  = 2005111500
     >         refresh = 7200 (2 hours)
     >         retry   = 3600 (1 hour)
     >         expire  = 1209600 (14 days)
     >         default TTL = 86400 (1 day)
    

    上記の例では example.com の mx レコードを DNS サーバーに問い合わせています。

    ※本記事については、WindowsXP Professional で確認しました。

nslookup で DNS サーバーを指定する

Windows 中級者向け情報

NSLOOKUP コマンドとは

nslookup コマンドを使用すると、IPアドレスからホスト名を調べたり、ホスト名からIPアドレスを調査することができます。

このコマンドを使用することによって、インターネットが見られない場合などに、トラブルの状態を把握することができます。

基本的な動作については、nslookup を使用するを参照してください

なぜDNSサーバーを指定するのか

通常PCのDNSサーバーは、ルーターに指定されている場合が多いと思います。この場合、nslookupでは自動的にルーターなど指定されているDNSサーバーに問い合わせを行います。

自分でDNSサーバーを構築した場合や、外部にあるDNSサーバーの動作確認を行いたい場合には、nslookupで使用するDNSサーバーを指定する必要があります。

DNSサーバーを指定する

  1. コマンドプロンプトで nslookup を実行します
  2.  nslookup (エンターキーを押す)
    

    ~

    1. 対話形式になったら、server DNSServerNameと入力します。
    2.  > server dns.exsample.com
         Default Server:  dns.exsample.com
         Address:  192.168.100.10
      

      以後の問い合わせについては、dns.exsample.com で行われます。