# زبان های اسکریپتی > JavaScript و Framework های مبتنی بر آن > سوال: دنبال آموزش json می گردم.

## idocsidocs

دنبال آموزش json می گردم. انجمن رو سرچ کردم و گوگل رو ولی مقاله کاملی نتونستم پیدا کنم.

تا اونجا که سرچ کردم می دونم که با jsonمی شه متون رو به صورت آرایه ارسال کرد.

----------


## mehdi.mousavi

> دنبال آموزش json می گردم. انجمن رو سرچ کردم و گوگل رو ولی مقاله کاملی نتونستم پیدا کنم. تا اونجا که سرچ کردم می دونم که با jsonمی شه متون رو به صورت آرایه ارسال کرد.


سلام.
لطفا به این تاپیک رجوع کنید.

موفق باشید.

----------


## idocsidocs

> سلام.
> لطفا به این تاپیک رجوع کنید.
> 
> موفق باشید.


 این تاپک رو قبلا خوندم. آیا همه مباحث مربوط به json توی همین تاپک که لینکش رو دادید توضیح داده شده؟

----------


## mehdi.mousavi

> این تاپک رو قبلا خوندم. آیا همه مباحث مربوط به json توی همین تاپک که لینکش رو دادید توضیح داده شده؟


سلام.
ببینید، JSON یه قالب هستش، مثل XML که به تنهایی کاربرد چندانی نداره. در واقع نحوه استفاده ما از این قالب هستش که به اون معنا و مفهوم میده. شما می تونید اطلاعات مورد نظر رو در قالب JSON به Client ارسال کنید، می تونید اطلاعات رو در این قالب بصورت Cookie ذخیره کنید، می تونید باهاش اطلاعات Shopping Cart رو نگهداری کنید، می تونید درخواست خودتون رو از یک سرور در این قالب بیان کنید و ... شما بفرمایید قصد انجام چه کاری رو دارید تا ببینم اصلا در سناریوی مورد نظر شما استفاده از این قالب صحیح هستش یا خیر. اگر هدفتون فقط ارسال آرایه ای از (فرضا) رشته ها به سرور هستش، اصلا نیازی به JSON ندارید. شما میتونید آرایه مورد نظر (فرضا ['111', '222'] رو) به سادگی به سرور ارسال کنید.

موفق باشید.

----------


## idocsidocs

> سلام.
> ببینید، JSON یه قالب هستش، مثل XML که به تنهایی کاربرد چندانی نداره. در واقع نحوه استفاده ما از این قالب هستش که به اون معنا و مفهوم میده. شما می تونید اطلاعات مورد نظر رو در قالب JSON به Client ارسال کنید، می تونید اطلاعات رو در این قالب بصورت Cookie ذخیره کنید، می تونید باهاش اطلاعات Shopping Cart رو نگهداری کنید، می تونید درخواست خودتون رو از یک سرور در این قالب بیان کنید و ... شما بفرمایید قصد انجام چه کاری رو دارید تا ببینم اصلا در سناریوی مورد نظر شما استفاده از این قالب صحیح هستش یا خیر. اگر هدفتون فقط ارسال آرایه ای از (فرضا) رشته ها به سرور هستش، اصلا نیازی به JSON ندارید. شما میتونید آرایه مورد نظر (فرضا ['111', '222'] رو) به سادگی به سرور ارسال کنید.
> 
> موفق باشید.


 من توی درخواستهای آژاکس می خوام از JSONاستفاده کنم.
محتویات صفحه رو از این طریق می خوام ارسال کنم.

این محتویات ممکنه جدول باشن، ممکنه متن باشن، ممکنه تگهای تو در تو باشن و ....

----------


## mehdi.mousavi

> من توی درخواستهای آژاکس می خوام از JSONاستفاده کنم. محتویات صفحه رو از این طریق می خوام ارسال کنم. این محتویات ممکنه جدول باشن، ممکنه متن باشن، ممکنه تگهای تو در تو باشن و ....


منظورتون از اینکه "محتویات ممکنه جدول باشن" چیه؟ شما به چه دلیلی باید یک table رو با انبوهی (؟) از row ها و cell ها به سمت سرور ارسال کنید؟ طبیعتا <td> و <tr> ها سمت سرور برای شما کاربردی ندارن. اما ممکنه منظورتون اطلاعات درون جدول باشه که در این صورت نیز شما (تقریبا همواره) نیازی به ارسال کل اطلاعات به سمت سرور نخواهید داشت. ممکنه یکی دو فیلد در هر یک (یا برخی از) ردیف های جدول براتون سمت سرور معنا داشته باشه، پس باید ابتدا اون مقادیر رو Filter کرد، سپس اونها رو به سمت سرور ارسال کرد.

فیلتر کردن این مقادیر نیز در jQuery بسیار ساده هستش. فرض کنید قصد داریم تا اطلاعات cell های ستون دوم از جدول رو، فقط برای ردیف های زوج، بصورت آرایه به سرور ارسال کنیم. برای اینکار می تونیم بدین شکل عمل کنیم:


var array = $('#myTable tr:even td:nth-child(2)').map(function () {
    return $(this).html();
}).get();


بدین ترتیب من مقادیر مورد نظر رو از جدول بصورت یک آرایه می گیرم. مرحله بعدی ارسال این آرایه به سمت سرور هستش که به راحتی میسره:

$.post("myFile.php", { 'myChoices[]': array });

بدین ترتیب آرایه مورد نظر با اعداد مد نظرمون به سمت سرور ارسال میشه...

همونطوریکه میبنید، در این مثال نیازی به استفاده از JSON نبود و مقادیر بصورت آرایه به سمت سرور ارسال میشن. اما اگر فرض کنیم که علاوه بر این آرایه، باید اطلاعات دیگری رو هم به سرور ارسال کنیم، در اون صورت میتونیم از متود post بدین شکل استفاده کنیم (مثال زیر از سایت jQuery کپی شده):

$.post("test.php", { name: "John", time: "2pm" } );

همونطوریکه می بینید، اینجا من name و time رو بصورت جداگانه و بصورت یک JSON Object دارم به سمت سرور ارسال می کنم... بنابراین، کافیه تا شما اطلاعات مورد نیاز رو بصورت یک JSON Object در بیارید، سپس اونو با دستور (بطور مثال) post به سرور پست کنید.

موفق باشید.

----------


## idocsidocs

> منظورتون از اینکه "محتویات ممکنه جدول باشن" چیه؟ شما به چه دلیلی باید یک table رو با انبوهی (؟) از row ها و cell ها به سمت سرور ارسال کنید؟ طبیعتا <td> و <tr> ها سمت سرور برای شما کاربردی ندارن. اما ممکنه منظورتون اطلاعات درون جدول باشه که در این صورت نیز شما (تقریبا همواره) نیازی به ارسال کل اطلاعات به سمت سرور نخواهید داشت. ممکنه یکی دو فیلد در هر یک (یا برخی از) ردیف های جدول براتون سمت سرور معنا داشته باشه، پس باید ابتدا اون مقادیر رو Filter کرد، سپس اونها رو به سمت سرور ارسال کرد.
> 
> فیلتر کردن این مقادیر نیز در jQuery بسیار ساده هستش. فرض کنید قصد داریم تا اطلاعات cell های ستون دوم از جدول رو، فقط برای ردیف های زوج، بصورت آرایه به سرور ارسال کنیم. برای اینکار می تونیم بدین شکل عمل کنیم:
> 
> 
> var array = $('#myTable tr:even td:nth-child(2)').map(function () {
>     return $(this).html();
> }).get();
> 
> ...


همونطور که می دونید xml خیلی گسترده هست. همه مباحث مربوط به JSON  همین یکی دو تابع هست که گفتید و دیگه بحث بیشتری نداره؟

نمی شه که با استفاده از اطلاعات ناقص از JSON استفاده کرد و بگیم چون کدمون کار می کنه دیگه مشکلی پیش نمی یاد.

----------


## mehdi.mousavi

> همه مباحث مربوط به JSON  همین یکی دو تابع هست که گفتید و دیگه بحث بیشتری نداره؟


سلام.
تعداد توابعی اهمیتی نداره، مهم فهم اصل مطلب هستش، اینکه JSON چیه و چطوری میشه ازش استفاده کرد. حالا اینکه 2 تا تابع در jQuery وجود داره که JSON Object بگیره یا بیشتر، اهمیتی نداره.




> نمی شه که با استفاده از اطلاعات ناقص از JSON استفاده کرد و بگیم چون کدمون کار می کنه دیگه مشکلی پیش نمی یاد.


مشکل شما JSON نیست، بیشتر JavaScript و jQuery هستش. آیا شما می دونید

getJSON چیه؟ چه فرقی با post و get داره؟ و این دو چه ارتباطی با متود ajax دارن؟چطوری باید Property های یک Object رو خوند و چه Syntax هایی برای خوندن اونها وجود داره؟آیا با متود each در jQuery کاملا آشنا هستید؟ می دونید که میشه با این متود property های یک JSON Object رو بدست آورد؟چطور میشه یک JSON String رو به JSON Object تبدیل کرد (و بالعکس) و بصورت Cross Browser؟آیا با ابزارهای سمت سرور برای پردازش / تولید JSON Object ها آشنایی دارید؟و ...
هر سوالی در این زمینه دارید لطفا دقیق و روشن مطرح کنید، تا بهش پاسخ بدم (لطفا از طرح سوالات کلی پرهیز کنید).

موفق باشید.

----------


## idocsidocs

> سلام.
> تعداد توابعی اهمیتی نداره، مهم فهم اصل مطلب هستش، اینکه JSON چیه و چطوری میشه ازش استفاده کرد. حالا اینکه 2 تا تابع در jQuery وجود داره که JSON Object بگیره یا بیشتر، اهمیتی نداره.
> 
> 
> مشکل شما JSON نیست، بیشتر JavaScript و jQuery هستش. آیا شما می دونید
> 
> getJSON چیه؟ چه فرقی با post و get داره؟ و این دو چه ارتباطی با متود ajax دارن؟چطوری باید Property های یک Object رو خوند و چه Syntax هایی برای خوندن اونها وجود داره؟آیا با متود each در jQuery کاملا آشنا هستید؟ می دونید که میشه با این متود property های یک JSON Object رو بدست آورد؟چطور میشه یک JSON String رو به JSON Object تبدیل کرد (و بالعکس) و بصورت Cross Browser؟آیا با ابزارهای سمت سرور برای پردازش / تولید JSON Object ها آشنایی دارید؟و ...
> هر سوالی در این زمینه دارید لطفا دقیق و روشن مطرح کنید، تا بهش پاسخ بدم (لطفا از طرح سوالات کلی پرهیز کنید).
> 
> موفق باشید.


عجب !

آقای موسوی من می گم JSON چیه و یه مقاله بهم معرفی کنید که JSON رو یاد بگیرم ولی شما این همه سوال از من می پرسید !

خب من از کجا بدونم "چطور میشه یک JSON String رو به JSON Object تبدیل کرد" و بقیه سوالها رو.

من با جاوا اسکریپت و آژاکس آشنا هستم ولی جی کوئری بلد نیستم. منظورتون از این سوالها اینه که باید جی کوئری رو یاد بگیرم؟

نمی شه بدون جی کوئری از JSONاستفاده کرد؟

----------


## AMIBCT

JSON باید در مرورگرهای مختلف وجود داشته باشه ولی در عمل این طور نیست

در PHP هم یک افزونه هست که می‌تونه JSON رو پردازش کنه
ولی به اون هم اطمینانی نیست مگه اینکه بدونید سرور شما این افزونه رو داره

برای اطمینان 100 درصد باید از دو کتابخانه برای JavaScript و PHP استفاده کنید
با توجه به پردازش زیادی که کدگذاری و کدگشایی به JSON به سیستم تحمیل می‌کنه مخصوصا سمت سرور،

تا زمانی که لزومی به استفاده از JSON نیست بهتره از شیوه‌های دیگه استفاده کنید

----------


## idocsidocs

> JSON باید در مرورگرهای مختلف وجود داشته باشه ولی در عمل این طور نیست
> 
> در PHP هم یک افزونه هست که می‌تونه JSON رو پردازش کنه
> ولی به اون هم اطمینانی نیست مگه اینکه بدونید سرور شما این افزونه رو داره
> 
> برای اطمینان 100 درصد باید از دو کتابخانه برای JavaScript و PHP استفاده کنید
> با توجه به پردازش زیادی که کدگذاری و کدگشایی به JSON به سیستم تحمیل می‌کنه مخصوصا سمت سرور،
> 
> تا زمانی که لزومی به استفاده از JSON نیست بهتره از شیوه‌های دیگه استفاده کنید


خیلیها پیشنهاد می دن که از JSON استفاده کنم ولی دفعه اوله که کسی می گه در صورت نیاز از JSON استفاده کن.

----------


## AMIBCT

JSON می‌تونه کار برنامه‌نویسی رو سرعت بده

ولی از طرف دیگه برنامه‌نویسی وب با برنامه‌نویسی تحت ویندوز تفاوت داره
کارایی از اهمیت خیلی بالایی برخورداره

پردازش JSON در سمت سرور می‌تونه خیلی سنگین باشه
چون JSON استانداردهای خاصی داره
و موقع انتقال روی شبکه هم کدگذاری ( URL Encode ) می‌شه
اگه کارایی براتون اهمیتی نداره
از پیشنهاد خیلی‌ها استفاده کنید

----------


## mehdi.mousavi

> عجب ! آقای موسوی من می گم JSON چیه و یه مقاله بهم معرفی کنید که JSON رو یاد بگیرم ولی شما این همه سوال از من می پرسید ! خب من از کجا بدونم "چطور میشه یک JSON String رو به JSON Object تبدیل کرد" و بقیه سوالها رو.
> من با جاوا اسکریپت و آژاکس آشنا هستم ولی جی کوئری بلد نیستم. منظورتون از این سوالها اینه که باید جی کوئری رو یاد بگیرم؟ نمی شه بدون جی کوئری از JSONاستفاده کرد؟


سلام.
ببخشید، من گمان کردم سوال شما در بخش jQuery مطرح شده (دقت نکرده بودم)، به همین دلیل اون سوالات رو در ارتباط با jQuery مطرح کردم. و الا منظورم این نبود که برای فهم JSON باید jQuery رو یاد بگیرید. ابدا اینطور نیست. اما در مورد مقاله، شما می تونید به این مقالات رجوع کنید:

مقدمه ای بر JSON در JavaScript و .NETویدئوی مقدمه ای بر JSON توسط Drew Wilson 
مقدمه ای بر JSON (و نحوه استفاده از اون در C، C++‎، C#‎، Java، PHP و ...)مقدمه بر JSON توسط Wally McClure
موفق باشید.

----------


## Z.3.R.0

سلام، یک آموزش هم در این وبلاگ هست که توضیح داده چطور ازش درون jquery استفاده کنیم:
http://ireza.blog.ir/1391/11/03/how-...on-with-jquery

----------


## m_software

سلام به شما عزیزان من یک سایت رو طراحی کردم الان میخوام نرم افزار اندروید اون رو هم طراحی کنم اما الان اون طوری که سوال کردم باید از وب سرویس استفاده کنم من هم هیچ اطلاع خاصی از نحوه طراحی اون ندارم میشه راهنمایی کنید

----------

