Android开源:JSON - 简单易用的json解析

IsabelLandi 8年前
   <h2>JSON</h2>    <p><img src="https://simg.open-open.com/show/f5a4a4912fd35f29eb553589653a6258.jpg"></p>    <p>简单易用的json解析,json生成器和基于JSONArray和JSONObject for Android的数据存储.</p>    <h2>添加到项目</h2>    <p>To use JSON you must add it as a dependency in your Gradle build:</p>    <p>Step 1. Add the JitPack repository to your build file Add it in your root build.gradle at the end of repositories:</p>    <pre>  allprojects {          repositories {              ...              maven { url "https://jitpack.io" }          }      }</pre>    <p>Step 2. Add the dependency</p>    <pre>  dependencies {      compile 'com.github.amirdew:JSON:v1.0.0'  }</pre>    <h2>使用</h2>    <p>You can create JSON object from string and access data with key() and index() methods.</p>    <pre>  String simpleJsonString = "{\"id\":1,\"name\":\"A green door\",\"price\":12.5,\"tags\":[\"home\",\"green\"]}";    JSON json = new JSON(simpleJsonString);    //access data  String firstTag = json.key("tags").index(0).stringValue();  Double price = json.key("price").doubleValue();</pre>    <p>products json:</p>    <pre>  [    {      "id": 2,      "name": "An ice sculpture",      "price": 12.50,      "tags": ["cold", "ice"],      "dimensions": {        "length": 7.0,        "width": 12.0,        "height": 9.5      },      "warehouseLocation": {        "latitude": -78.75,        "longitude": 20.4      }    },    {      "id": 3,      "name": "A blue mouse",      "price": 25.50,      "dimensions": {        "length": 3.1,        "width": 1.0,        "height": 1.0      },      "warehouseLocation": {        "latitude": 54.4,        "longitude": -32.7      }    }  ]</pre>    <p>loop:</p>    <pre>  for(int i=0; i<products.count(); i++){       json productInfo = products.index(i);     String productName = productInfo.key("name").stringValue();  }</pre>    <p>JSON is exception and null free, you can use key() and index() many times without worry about any exception.</p>    <pre>  int someValue = products.index(8).key("someKey").index(1).key("someOther").intValue();   //someValue = 0</pre>    <p>check index or key is exist or is null:</p>    <pre>  if( products.index(3).key("someKey").isNull() ){       /*...*/    }    if( products.index(1).key("someKey").exist() ){     /*...*/    }</pre>    <h2>方法</h2>    <table>     <thead>      <tr>       <th>Method</th>       <th>Input type</th>       <th>Return type</th>       <th>Default</th>       <th>Description</th>      </tr>     </thead>     <tbody>      <tr>       <td>key()</td>       <td>String</td>       <td>JSON</td>       <td>-</td>       <td>if object is a dictionary return JSON object with input key</td>      </tr>      <tr>       <td>index()</td>       <td>int</td>       <td>JSON</td>       <td>-</td>       <td>if object is a array return JSON object with input index</td>      </tr>      <tr>       <td>stringValue()</td>       <td>-</td>       <td>String</td>       <td>empty string ("")</td>       <td>return .toString() of object</td>      </tr>      <tr>       <td>intValue()</td>       <td>-</td>       <td>int</td>       <td>0</td>       <td>return integer value if possible</td>      </tr>      <tr>       <td>longValue()</td>       <td>-</td>       <td>long</td>       <td>0</td>       <td>return long value if possible</td>      </tr>      <tr>       <td>doubleValue()</td>       <td>-</td>       <td>Double</td>       <td>0</td>       <td>return Double value if possible</td>      </tr>      <tr>       <td>booleanValue()</td>       <td>-</td>       <td>boolean</td>       <td>false</td>       <td>return true if object is kind of boolean and true or is kind of string and equal "true"</td>      </tr>      <tr>       <td>value()</td>       <td>-</td>       <td>Object</td>       <td>-</td>       <td>return related object</td>      </tr>      <tr>       <td>count()</td>       <td>-</td>       <td>int</td>       <td>0</td>       <td>if related object is a dictionary return number of keys, if related object is a array return length of array</td>      </tr>      <tr>       <td>isNull()</td>       <td>-</td>       <td>boolean</td>       <td>-</td>       <td>return true if related object is null</td>      </tr>      <tr>       <td>exist()</td>       <td>-</td>       <td>boolean</td>       <td>-</td>       <td>return true if related object with index or key exists</td>      </tr>      <tr>       <td>getJsonArray()</td>       <td>-</td>       <td>JSONArray</td>       <td>null</td>       <td>return related JSONArray</td>      </tr>      <tr>       <td>getJsonObject()</td>       <td>-</td>       <td>JSONObject</td>       <td>null</td>       <td>return related JSONObject</td>      </tr>     </tbody>    </table>    <h2>用法 - 生成json,数据保存</h2>    <p>You can use JSON.dic() and JSON.array() static methods to generate json string or hold and pass data</p>    <pre>  JSON generatedJsonObject = JSON.create(                  JSON.dic(                          "someKey", "someValue",                          "someArrayKey", JSON.array(                                  "first",                                  1,                                  2,                                  JSON.dic(                                          "emptyArrayKey", JSON.array()                                  )                          )                  )          );        String jsonString = generatedJsonObject.toString();</pre>    <p>result:</p>    <pre>  {    "someKey": "someValue",    "someArrayKey": [      "first",      1,      2,      {        "emptyArrayKey": []      }    ]  }</pre>    <p>add, edit, remove:</p>    <p>note: now its work for first level only</p>    <pre>  generatedJsonObject.addEditWithKey("someArrayKey","someOtherValue");</pre>    <p>result:</p>    <pre>  {    "someKey": "someValue",    "someArrayKey": "someOtherValue"  }</pre>    <h2>Available methods - generate, edit, remove</h2>    <table>     <thead>      <tr>       <th>Method</th>       <th>Input type</th>       <th>Description</th>      </tr>     </thead>     <tbody>      <tr>       <td>add()</td>       <td>Object</td>       <td>if current related object is an array add object at end of array</td>      </tr>      <tr>       <td>remove()</td>       <td>Object</td>       <td>if current related object is an array and input object exist, remove it from array</td>      </tr>      <tr>       <td>addWithIndex()</td>       <td>Object, int</td>       <td>if current related object is an array replace input object with object for input index</td>      </tr>      <tr>       <td>addWithIndex()</td>       <td>Object, int</td>       <td>if current related object is an array replace input object with object for input index</td>      </tr>      <tr>       <td>removeWithIndex()</td>       <td>int</td>       <td>if current related object is an array remove object for input index</td>      </tr>      <tr>       <td>addEditWithKey()</td>       <td>String, Object</td>       <td>if current related object is a dictionary add input object with input key</td>      </tr>      <tr>       <td>removeWithKey()</td>       <td>String</td>       <td>if current related object is a dictionary remove object with input key</td>      </tr>      <tr>       <td>static create()</td>       <td>Object</td>       <td>create new instance of JSON with input object</td>      </tr>      <tr>       <td>static dic()</td>       <td>Object...</td>       <td>if number of input objects is even create JSONObject use even objects as key and odd obejcts as value</td>      </tr>      <tr>       <td>static array()</td>       <td>Object...</td>       <td>create JSONArray use input objects</td>      </tr>     </tbody>    </table>    <p> </p>    <p> </p>    <p> </p>