الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال عن تقنية الـ Json

بدأه vector_ever في 27 يونيو 2013 · 3 رد · 1,618 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

 

بدأت من فترة بسيطة بتعلم تقنية  الـ Json وهدفي هو أن استخدمها مع الجافا ويب JEE

على كل حال اثناء تصفحي لبعض المنتديات التي تقدم شروحات وصلت الى مدونة العم مكيونغ mkyong وفيها بعض الشروحات المتقدمة عن  الـ Json وهو يستخدم مكتبة اسمها Jackson

المشكلة انه لدى محاولتي تطبيق الشرح احصل على خطأ في الكود قبل تنفيذه ولا اعرف السبب مع انني قمت بتضمين المكتبة مع الكود

 

import java.io.File;
import java.io.IOException;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;


public class JacksonExample {
   public static void main(String[] args) {


User user = new User();
ObjectMapper mapper = new ObjectMapper();


try {


// convert user object to json string, and save to a file
mapper.writeValue(new File("c:\\user.json"), user);


// display to console
System.out.println(mapper.writeValueAsString(user));


} catch (JsonGenerationException e) {


e.printStackTrace();


} catch (JsonMappingException e) {


e.printStackTrace();


} catch (IOException e) {


e.printStackTrace();


}


 }


}
import java.util.ArrayList;
import java.util.List;


public class User {


private int age = 29;
private String name = "mkyong";
private List<String> messages = new ArrayList<String>() {
{
add("msg 1");
add("msg 2");
add("msg 3");
}
};


//getter and setter methods


@Override
public String toString() {
return "User [age=" + age + ", name=" + name + ", " +
"messages=" + messages + "]";
}
}

الخطأ يحدث في الأمر التالي 

System.out.println(mapper.writeValueAsString(user));

كما هو واضح في الصورة التالية 

post-152477-0-27704700-1372327609_thumb.

 

رابط المثال الأصلي http://www.mkyong.com/java/how-to-convert-java-object-to-from-json-jackson/

فهل من فكرة لحل هذا الخطا الغير مفهوم

وهل المشكلة من المكتبة

 

المكتبة في المرفقات

 

jackson.jar

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#2

هل فكرت باستخدام google-gson؟ فهي أبسط تصميم وأسهل استخدام من هذه المكتبة، مثالاً لإنشاء كائن json كل ماتحتاج لعمله:

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import java.util.List;
import java.util.Arrays;

class Example
{
    private String          name;
    private int             age;
    private List<String>    friends;

    public Example(String name, int age, List<String> friends)
    {
        this.name    = name;
        this.age     = age;
        this.friends = friends;
    }
}

public class GsonExample
{
    public static void main(String[] argv)
    {
        Gson json = new GsonBuilder().create();
        Example example = new Example("Ali", 20, Arrays.asList("Ahmed", "Khaled", "Zeiad"));

        // {"name":"Ali","age":20,"friends":["Ahmed","Khaled","Zeiad"]}
        System.out.println( json.toJson(example) );
    }
}

ستطبع:

{"name":"Ali","age":20,"friends":["Ahmed","Khaled","Zeiad"]}

لاحظ أنها تحول لك الـclass إلى كائن json.

 

ولقراءة كائن الـjson السابق فكل ماستعمله أنك ستضيف getter:

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import java.util.List;
import java.util.Arrays;

class Example
{
    private String          name;
    private int             age;
    private List<String>    friends;

    public Example(String name, int age, List<String> friends)
    {
        this.name    = name;
        this.age     = age;
        this.friends = friends;
    }

    public String getName()
    {
        return name;
    }

    public int getAge()
    {
        return age;
    }

    public List<String> getFriends()
    {
        return friends;
    }
}

public class GsonExample
{
    public static void main(String[] argv)
    {
        Gson json = new GsonBuilder().create();
        Example example = json.fromJson(
            "{\"name\":\"Ali\",\"age\":20,\"friends\":[\"Ahmed\",\"Khaled\",\"Zeiad\"]}",
            Example.class
        );

        System.out.println("Name   : " + example.getName());
        System.out.println("Age    : " + example.getAge());
        System.out.println("Friends: ");

        for( String friend : example.getFriends() )
            System.out.println("> " + friend);
    }
}

ستطبع:

Name   : Ali
Age    : 20
Friends:
> Ahmed
> Khaled
> Zeiad

استخدامها بديهي جداً وبسيط.

تم تعديل هذه المشاركة بواسطة Mr.B في 27 يونيو 2013 في 16:20

1
#3

شكرا اخي على ردك العطر والله قبل نصف ساعة كنت اقرأ واطبق أمثلة على الـ Gson وهي فعلا اسهل بكثير

 

لدي استفسار وهو هل لديك امثلة مفيدة عن استخدام هذه التقنية مع JSP او JSF ولك جزيل الشكر والسلام

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#4

الـ JSON , XML هى وسيلة لنقل البيانات بين شتئ المجالات

اذا اردت ان تقوم بالاتصال بين لغة برمجه ولغة اخرى فقد تجد الوسيلة احدهما

واذا اردت ان تبنى تطبيق يعتمد على Third party فستستخدم هذا الFormat

واذا اردت ان تقوم بالاتصال بالFacebook ,twitter ستجدهم يستخدمون الـ JSON

على سيبل المثال

https://dev.twitter.com/docs/api/1.1/get/statuses/home_timeline

 

 

بالتوفيق

Software Developer
Mahmoudkelany.com


 

مواضيع مشابهة