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 = 0
check 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 |