Android開源:JSON - 簡單易用的json解析
JSON
簡單易用的json解析,json生成器和基于JSONArray和JSONObject for Android的數據存儲.
添加到項目
To use JSON you must add it as a dependency in your Gradle build:
Step 1. Add the JitPack repository to your build file Add it in your root build.gradle at the end of repositories:
allprojects { repositories { ... maven { url "https://jitpack.io" } } }
Step 2. Add the dependency
dependencies { compile 'com.github.amirdew:JSON:v1.0.0' }
使用
You can create JSON object from string and access data with key() and index() methods.
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>
products json:
[ { "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 } } ]loop:
for(int i=0; i<products.count(); i++){json productInfo = products.index(i); String productName = productInfo.key("name").stringValue(); }</pre>
JSON is exception and null free, you can use key() and index() many times without worry about any exception.
int someValue = products.index(8).key("someKey").index(1).key("someOther").intValue(); //someValue = 0check index or key is exist or is null:
if( products.index(3).key("someKey").isNull() ){ /.../ }if( products.index(1).key("someKey").exist() ){ /.../ }</pre>
方法
Method | Input type | Return type | Default | Description |
---|---|---|---|---|
key() | String | JSON | - | if object is a dictionary return JSON object with input key |
index() | int | JSON | - | if object is a array return JSON object with input index |
stringValue() | - | String | empty string ("") | return .toString() of object |
intValue() | - | int | 0 | return integer value if possible |
longValue() | - | long | 0 | return long value if possible |
doubleValue() | - | Double | 0 | return Double value if possible |
booleanValue() | - | boolean | false | return true if object is kind of boolean and true or is kind of string and equal "true" |
value() | - | Object | - | return related object |
count() | - | int | 0 | if related object is a dictionary return number of keys, if related object is a array return length of array |
isNull() | - | boolean | - | return true if related object is null |
exist() | - | boolean | - | return true if related object with index or key exists |
getJsonArray() | - | JSONArray | null | return related JSONArray |
getJsonObject() | - | JSONObject | null | return related JSONObject |
用法 - 生成json,數據保存
You can use JSON.dic() and JSON.array() static methods to generate json string or hold and pass data
JSON generatedJsonObject = JSON.create( JSON.dic( "someKey", "someValue", "someArrayKey", JSON.array( "first", 1, 2, JSON.dic( "emptyArrayKey", JSON.array() ) ) ) );String jsonString = generatedJsonObject.toString();</pre>
result:
{ "someKey": "someValue", "someArrayKey": [ "first", 1, 2, { "emptyArrayKey": [] } ] }add, edit, remove:
note: now its work for first level only
generatedJsonObject.addEditWithKey("someArrayKey","someOtherValue");result:
{ "someKey": "someValue", "someArrayKey": "someOtherValue" }Available methods - generate, edit, remove
Method | Input type | Description |
---|---|---|
add() | Object | if current related object is an array add object at end of array |
remove() | Object | if current related object is an array and input object exist, remove it from array |
addWithIndex() | Object, int | if current related object is an array replace input object with object for input index |
addWithIndex() | Object, int | if current related object is an array replace input object with object for input index |
removeWithIndex() | int | if current related object is an array remove object for input index |
addEditWithKey() | String, Object | if current related object is a dictionary add input object with input key |
removeWithKey() | String | if current related object is a dictionary remove object with input key |
static create() | Object | create new instance of JSON with input object |
static dic() | Object... | if number of input objects is even create JSONObject use even objects as key and odd obejcts as value |
static array() | Object... | create JSONArray use input objects |