سلام دوستان گرامی ، حالتون چطوره؟؟ خوب و سلامتین. دراین قسمت به توضیح json درحاوا میپردازیم.این مبحث نحوه ی encode/decode کردن اشیا JSON در زبان قدرتمند شی گرای Java را شرح می دهد. برای parse اشیا JSON در زبان Java لازم است ماژول مربوطه را دانلود و سپس نصب نمایید. در این آموزش ما ماژول JSON.simple را دانلود و نصب می کنیم. برای این منظور مکان قرار گیری فایل json-simple-1.1.1.jar را به متغیر محیطی (environment variable) به نام CLASSPATH اضافه می کنیم.

This chapter covers how to encode and decode JSON objects using Java programming language. Let’s start with preparing the environment to start our programming with Java for JSON.

Environment

Before you start with encoding and decoding JSON using Java, you need to install any of the JSON modules available. For this tutorial we have downloaded and installed JSON.simple and have added the location of json-simple-1.1.1.jar file to the environment variable CLASSPATH.

نگاشت از JSON به Java و بالعکس

JSON.simple موجودیت های JSON را به معادل آن در Java و موجودیت های Java را به معادل های آن در JSON تبدیل می کند.

Mapping between JSON and Java entities

JSON.simple maps entities from the left side to the right side while decoding or parsing, and maps entities from the right to the left while encoding.

JSONمعادل شی

Javaمعادل

string

java.lang.String

number

java.lang.Number

true|false

java.lang.Boolean

null

null

array

java.util.List

object

java.util.Map

On decoding, the default concrete class of java.util.List isorg.json.simple.JSONArray and the default concrete class of java.util.Map isorg.json.simple.JSONObject.

تبدیل شی JSON به معادل آن در Java (encode کردن شی JSON در Java)

در زیر یک مثال ساده را می بینید که در آن با استفاده از JSONObject که یک زیرکلاس از java.util.HashMap هست، شی JSON را به معادل آن در Java تبدیل می کنیم. لازم به ذکر است که در صورت استفاده از این روش، هیچ مرتب سازی (ordering) انجام نمی شود. اگر می خواهید المان ها به صورت دقیق مرتب سازی شوند، در آن صورت بایستی متد JSONValue.toJSONString ( map ) را با یک ordered map implementation نظیر java.util.LinkedHashMap را بکار ببرید.

Encoding JSON in Java

Following is a simple example to encode a JSON object using Java JSONObject which is a subclass of java.util.HashMap. No ordering is provided. If you need the strict ordering of elements, use JSONValue.toJSONString ( map ) method with ordered map implementation such as java.util.LinkedHashMap.

import org.json.simple.JSONObject;

class JsonEncodeDemo {

public static void main(String[] args){

JSONObject obj = new JSONObject();

obj.put(“name”, “foo”);

obj.put(“num”, new Integer(100));

obj.put(“balance”, new Double(1000.21));

obj.put(“is_vip”, new Boolean(true));

System.out.print(obj);

}

}

پس از اجرا و کامپایل، کد فوق خروجی زیر را تولید می کند:

On compiling and executing the above program the following result will be generated −

{“balance”: 1000.21, “num”:100, “is_vip”:true, “name”:”foo”}

در زیر مثال دیگری را مشاهده می کنید که در آن شی JSON با استفاده از JSONObject تولید می شود:

Following is another example that shows a JSON object streaming using Java JSONObject −

import org.json.simple.JSONObject;

class JsonEncodeDemo {

public static void main(String[] args){

JSONObject obj = new JSONObject();

obj.put(“name”,”foo”);

obj.put(“num”,new Integer(100));

obj.put(“balance”,new Double(1000.21));

obj.put(“is_vip”,new Boolean(true));

StringWriter out = new StringWriter();

obj.writeJSONString(out);

String jsonText = out.toString();

System.out.print(jsonText);

}

}

پس از اجرا و کامپایل، برنامه ی فوق خروجی زیر را بدست می دهد:

On compiling and executing the above program, the following result is generated −

{“balance”: 1000.21, “num”:100, “is_vip”:true, “name”:”foo”}

Decode شی JSON در Java

مثال زیر از JSONObject و JSONArray بهره می گیرد. JSONObject یک زیرکلاس (subclass) از java.util.Map و JSONArray زیرکلاسی از java.util.List است. بنابراین می توانید با عملیات متعارف Map یا List به آن ها دسترسی داشته باشید.

Decoding JSON in Java

The following example makes use of JSONObject and JSONArray where JSONObject is a java.util.Map and JSONArray is a java.util.List, so you can access them with standard operations of Map or List.

import org.json.simple.JSONObject;

import org.json.simple.JSONArray;

import org.json.simple.parser.ParseException;

import org.json.simple.parser.JSONParser;

class JsonDecodeDemo {

public static void main(String[] args){

JSONParser parser = new JSONParser();

String s = “[0,{\”1\”:{\”2\”:{\”3\”:{\”4\”:[5,{\”6\”:7}]}}}}]”;

try{

Object obj = parser.parse(s);

JSONArray array = (JSONArray)obj;

System.out.println(“The 2nd element of array”);

System.out.println(array.get(1));

System.out.println();

JSONObject obj2 = (JSONObject)array.get(1);

System.out.println(“Field \”1\””);

System.out.println(obj2.get(“1”));

s = “{}”;

obj = parser.parse(s);

System.out.println(obj);

s = “[5,]”;

obj = parser.parse(s);

System.out.println(obj);

s = “[5,,2]”;

obj = parser.parse(s);

System.out.println(obj);

}catch(ParseException pe){

System.out.println(“position: ” + pe.getPosition());

System.out.println(pe);

}

}

}

پس از کامپایل و اجرا، برنامه ی فوق نتیجه ی زیر را برمی گرداند:

The 2nd element of array

{“۱”:{“۲”:{“۳”:{“۴”:[۵,{“۶”:۷}]}}}}

Field “1”

{“۲”:{“۳”:{“۴”:[۵,{“۶”:۷}]}}}

{}

[۵]

[۵,۲]