জেএসএনের জন্য এক্সএসএলটি সমতুল্য [বন্ধ]


411

জেএসএনের জন্য কি কোনও এক্সএসএলটি সমতুল্য? এক্সএসএলটি এক্সএমএল-এর মতো জেএসএন-তে আমাকে রূপান্তর করার অনুমতি দেওয়ার জন্য কিছু।


1
বিটিডব্লিউ, এটি কোন ভাষা / প্ল্যাটফর্মটি চালু থাকবে?
স্ট্যাক্সম্যান

6
@ স্ট্যাক্সম্যান এক্সএসএলটি এমন একটি মান যা অনেক ভাষা এবং প্ল্যাটফর্মগুলিতে প্রকৃত বাস্তবায়ন হয়, আমার প্রশ্নগুলি একই ধরণের প্রচেষ্টা লক্ষ্য করে।
luvieere

36
আপনার প্রশ্নের জন্য +1। অনেক লোক এক্সএসএলটিকে উপেক্ষা বা সরল অপছন্দ করে বলে মনে হচ্ছে তবে এটি এটি এক্সএমএল ভারবোসিটির পক্ষে কেবল একটি প্রতিক্রিয়া হতে পারে। এবং প্রকৃতপক্ষে, এক্সএমএল ধীরে ধীরে অনুগ্রহের বাইরে চলে যাওয়ার সাথে সাথে এক্সএসএলটি ব্যবহার করার সুযোগ কম এবং কম রয়েছে, যা আফসোস! JSON এর জন্য একটি এক্সএসএলটি সমতুল্য দুর্দান্ত হবে।
নিকোলাস লে থিয়েরি ডি'নাকুইন

10
@ নিকোলাসলিথাইরিড'ইনাকুইন সম্মত। প্রচুর লোক এক্সএমএলকে ঘৃণা করে এবং তাই এক্সএসএলটি বরখাস্ত করে। সরঞ্জামগুলির এক্সএমএল বাস্তুসংস্থান জাভা দেবগুলিতেও ভারী, যা আরও বেশি লোককে সরিয়ে দেয়। তবে 2000 এর দশকের মাঝামাঝি আমি এক্সএসএলটিতে ভারী ছিলাম এবং এক্সএমএল বাস্তুতন্ত্রের বাইরে সরাসরি সমতুল্য নেই এমন অসাধারণ শক্তি রয়েছে। আমি চাই ভালবাসেন একটি JSON- সমতুল্য!
জেরেইন

1
@ নিকোলাসলিথিরিডি'এন্নকুইন: jsfiddle.net/YSharpLanguage/kj9pk8oz/10 বা jsfiddle.net/YSharpLanguage/ppfmmu15/10 বা jsfiddle.net/YSharpLanguage/hvo24hmk/3
YSharp

উত্তর:


77

আকর্ষণীয় ধারণা। গুগলে কিছু অনুসন্ধান কিছু পৃষ্ঠার আগ্রহ প্রকাশ করেছে, যার মধ্যে রয়েছে:

আশাকরি এটা সাহায্য করবে.


10
হ্যাঁ, আপনাকে ধন্যবাদ, আমি এটিই খুঁজছিলাম। এটি অত্যন্ত দুঃখের বিষয় প্রযুক্তিটি বেশি জনপ্রিয় নয়, জেএসএন প্রায়শই রিস্ট-স্টাইল পরিষেবাদিতে রিটার্ন ফর্ম্যাট হিসাবে ব্যবহৃত হয় এবং এটিতে রূপান্তরগুলি বাস্তবায়নের একটি মানক উপায় থাকলে ভাল লাগবে।
lovieere

8
এই কোডটি স্ট্রিং.ইভাল () ... :-(
dreftymac

শুধুমাত্র উত্তরটির লিঙ্ক করুন
জিন-ফ্রান্সোইস ফ্যাব্রে

102

জেএসএনের জন্য এক্সএসএলটি সমতুল্য - প্রার্থীদের একটি তালিকা (সরঞ্জাম এবং চশমা)

সরঞ্জামসমূহ

  1. XSLT

    আপনি জেএসএনের জন্য এক্সএসএলটি ব্যবহার করতে পারেন fn: json-to-xML এর লক্ষ্য নিয়ে

    এই বিভাগটি XSLT ব্যবহার করে JSON ডেটা প্রক্রিয়া করার অনুমতি দেয় এমন সুবিধাগুলি বর্ণনা করে।

  2. jq

    জেকিউ জেএসএন ডেটার জন্য সেডের মতো - আপনি এটিকে টুকরো টুকরো করতে এবং ফিল্টার করতে এবং ম্যাপ করার জন্য এবং কাঠামোগত ডেটা একই স্বাচ্ছন্দ্যে রূপান্তর করতে পারেন যা সেড, আর্ক, গ্রেপ এবং বন্ধুরা আপনাকে পাঠ্য সহ খেলতে দেয়। বিভিন্ন ওএসের জন্য ইনস্টল প্যাকেজ রয়েছে।

  3. জেজে

    জেজে হ'ল একটি কমান্ড লাইন ইউটিলিটি যা জেএসওএন নথি থেকে মানগুলি পুনরুদ্ধার বা আপডেট করার জন্য দ্রুত এবং সহজ উপায় সরবরাহ করে। এটি হুডের নীচে GJSON এবং SJSON দ্বারা চালিত।

  4. FX

    কমান্ড-লাইন JSON প্রসেসিং সরঞ্জাম

    • নতুন সিনট্যাক্স শেখার দরকার নেই
    • সরল জাভাস্ক্রিপ্ট
    • ফর্ম্যাট করা এবং হাইলাইট করা
    • একক বাইনারি
  5. jl

    জেএল ("জেএসওএন ল্যাম্বদা") জেএসওএনকে জিজ্ঞাসাবাদ এবং পরিচালনা করার জন্য একটি ক্ষুদ্র কার্যকরী ভাষা।

  6. ঝাঁকুনি

    জাভাতে লেখা JSON থেকে JSON রূপান্তর লাইব্রেরি যেখানে ট্রান্সফর্মের জন্য "স্পেসিফিকেশন" নিজেই একটি JSON নথি।

  7. Gron

    JSON গ্রেপযোগ্য করুন! আপনি যা চান তার জন্য গ্রিপ করা আরও সহজ করে তুলতে এবং এটির জন্য পরম 'পথ' দেখতে গ্রাউন জেএসনকে বিচ্ছিন্ন কার্যভারে রূপান্তরিত করে। এটি এমন এপিআইগুলির অন্বেষণকে সহজ করে যা জেএসএনের বৃহত ব্লবগুলি ফিরিয়ে দেয় তবে ভয়ানক ডকুমেন্টেশন রয়েছে।

  8. JSON

    জেসন জেএসএনের সাথে কাজ করার জন্য একটি দ্রুত সিএলআই সরঞ্জাম। এটি কোনও একক-ফাইল নোড.জেএস স্ক্রিপ্ট যার কোনও বহিরাগত ডেপ নেই (নোড.জেএস নিজেই ব্যতীত)।

  9. JSON-ই

    JSON-e হল JSON অবজেক্টগুলিতে এমবেডিং প্রসঙ্গে ডেটা-স্ট্রাকচার প্যারামিটারাইজেশন সিস্টেম। কেন্দ্রীয় ধারণা হ'ল একটি ডেটা স্ট্রাকচারকে "টেমপ্লেট" হিসাবে বিবেচনা করা এবং আউটপুট ডেটা কাঠামো উত্পাদন করতে অন্য ডেটা স্ট্রাকচারকে প্রসঙ্গে হিসাবে রূপান্তর করা।

  10. JSLT

    জেএসএলটি হ'ল জেএসএনের একটি সম্পূর্ণ প্রশ্ন এবং রূপান্তর ভাষা। ভাষা নকশাটি জেকিউ, এক্সপ্যাথ এবং এক্সকিউয়ারি দ্বারা অনুপ্রাণিত।

  11. JSONata

    JSONata হ'ল JSON ডেটার জন্য একটি হালকা প্রশ্ন ও ট্রান্সফর্মেশন ভাষা। এক্সপ্যাথ ৩.১-এর 'লোকেশন পাথ' শব্দার্থবিদ্যার দ্বারা অনুপ্রাণিত হয়ে, পরিশীলিত ক্যোয়ারিকে একটি কমপ্যাক্ট এবং স্বজ্ঞাত স্বরলিপিতে প্রকাশ করার অনুমতি দেয়।

  12. JSON-রূপান্তরগুলির সর্বশেষ প্রতিশ্রুতি ডিসেম্বর 1, 2017

    JSON ডেটা রুপান্তর করতে পুনরাবৃত্ত, প্যাটার্ন-মেলানো পদ্ধতির সরবরাহ করে। রূপান্তরগুলি নিয়মের একটি সেট হিসাবে সংজ্ঞায়িত করা হয় যা কোনও জেএসওএন অবজেক্টের কাঠামোর সাথে মেলে। যখন কোনও ম্যাচ ঘটে, নিয়মটি রূপান্তরিত ডেটা নির্গত করে optionচ্ছিকভাবে শিশু সামগ্রীতে রূপান্তর করতে পুনরাবৃত্তি করে।

  13. jsawk সর্বশেষ প্রতিশ্রুতি 4 মার্চ, 2015

    জাসওক অ্যাজকের মতো, তবে জেএসএন-র জন্য। আপনি স্টিডিন থেকে পড়া জেএসওন অবজেক্টের একটি অ্যারের সাথে কাজ করেন, স্টাডাউটে মুদ্রিত ফলাফলের অ্যারে তৈরি করতে জাভাস্ক্রিপ্ট ব্যবহার করে এগুলি ফিল্টার করুন।

  14. Yate সর্বশেষ প্রতিশ্রুতি 13 মার্চ, 2017

    পরীক্ষাগুলি নথি হিসাবে ব্যবহার করা যেতে পারে https://github.com/pasaran/yate/tree/master/tests

  15. jsonpath-object-transform শেষ প্রতিশ্রুতি 18 জানুয়ারি, 2017

    JSONPath ব্যবহার করে কোনও অবজেক্টের আক্ষরিক থেকে ডেটা টানুন এবং কোনও টেমপ্লেটের ভিত্তিতে একটি নতুন অবজেক্ট তৈরি করুন।

  16. Stapling গত কমিট সেপ্টেম্বর 16, 2013

    স্ট্যাপলিং একটি জাভাস্ক্রিপ্ট লাইব্রেরি যা JSON অবজেক্টের জন্য এক্সএসএলটি ফর্ম্যাটিং সক্ষম করে। একটি জাভাস্ক্রিপ্ট টেম্প্লেটিং ইঞ্জিন এবং পাঠ্য / এইচটিএমএল টেমপ্লেটগুলি ব্যবহার করার পরিবর্তে স্ট্যাপলিং আপনাকে এক্সএসএলটি টেম্পলেটগুলি ব্যবহার করার সুযোগ দেয় - আপনার জেএসএন ডেটাসোর্সগুলি বিশ্লেষণের জন্য অ্যাজাক্সের সাথে অ্যাসিঙ্ক্রোনালি লোড করা হয়েছে এবং তারপরে ক্লায়েন্ট সাইডকে ক্যাশে করা হয়েছে।

চশমা:

  • JsonPointer

    জেএসএন পয়েন্টার একটি জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন (জেএসএন) নথির মধ্যে একটি নির্দিষ্ট মান সনাক্তকরণের জন্য একটি স্ট্রিং সিনট্যাক্সকে সংজ্ঞায়িত করে।

  • JsonPath

    এক্সপিথ এক্সপ্রেশনটি কোনও এক্সএমএল ডকুমেন্টের সাথে সংমিশ্রণে ব্যবহৃত হয়, জেএসএনপথ এক্সপ্রেশন সর্বদা জেএসএন কাঠামোকে একইভাবে উল্লেখ করে

  • JSPath

    জেএসএনের জেএসপ্যাথ এক্সএমএলের জন্য এক্সপথের মতো "

  • JSONiq

    জেএসোনিকের পেছনের অনুপ্রেরণার মূল উত্স হ'ল এক্সকিউরি, যা এখন পর্যন্ত আধা-কাঠামোগত ডেটার জন্য একটি সফল এবং উত্পাদনশীল কোয়েরি ভাষা প্রমাণিত হয়েছে


2
আপনার খুব বিস্তারিত এবং দরকারী পোস্টের জন্য আপনাকে ধন্যবাদ। এক-লাইনের জসনকে একটি পঠনযোগ্য আকারে রূপান্তর করতে, jq (আপনার তালিকায় nr.2) আমার পক্ষে সেরা পছন্দ। আবার ধন্যবাদ!
primehunter

1
আমি প্রায়শই সুন্দর মুদ্রণের জন্য json_pp ব্যবহার করি । এটি অনেকগুলি ডিস্ট্রোজের জন্য উপলব্ধ।
jschnasse

70

জোলটি চেষ্টা করুন । এটি জাভাতে লেখা একটি JSON থেকে JSON রূপান্তর লাইব্রেরি।

এটি বিশেষত তৈরি করা হয়েছিল কারণ আমরা "জেএসএন -> এক্সএমএল -> এক্সএসএলটি -> এক্সএমএল -> জেএসএন" গেমটি খেলতে চাইনি এবং পর্যাপ্ত জটিল রূপান্তরিত করার জন্য কোনও টেম্পলেট ব্যবহার করা আপত্তিযোগ্য নয়।


4
+9000: এটি একটি গুরুতর প্রকল্প! Huzzah। উদাহরণ সহ অনলাইন ডেমোটি শেখার বক্ররেখায় আরোহণ করতে ব্যাপকভাবে সহায়তা করে: jolt-demo.appspot.com
কেভিনার্পে

15

জকিউ - লাইটওয়েট এবং নমনীয় কমান্ড-লাইন জেএসএন প্রসেসর

এটি এক্সএসএলটির মতো টেমপ্লেট-ভিত্তিক নয়, বরং আরও সংক্ষিপ্ত। উদাহরণস্বরূপ একটি অ্যারের মধ্যে নিষ্কাশন nameএবং addressক্ষেত্র:[.name, .address]

টিউটোরিয়াল টুইটার এর তাদেরকে JSON এপিআই রূপান্তর একটি উদাহরণ মাধ্যমে পদচারনা (এবং ম্যানুয়াল অনেক উদাহরণ আছে)।


4
এটি আরও সংক্ষিপ্ত কারণ এটি অনেক কম সক্ষম।
ইহু ওনওয়ুকা

জেসন গাছের মধ্যে কোনও প্রদত্ত গুণকে পুনরাবৃত্তভাবে কীভাবে অনুসন্ধান করব তা আমি খুঁজে পাইনি
ড্যানিয়েল

@ ড্যানিয়েল .. | .attr_name?আপনি কি খুঁজছেন? ( stedolan.github.io/jq/manual/#RecursiveDescent থেকে : .. )
ankostis

1
এক্সএসএলটি হিসাবে সক্ষম নাও হতে পারে তবে খুব দরকারী এবং এক্সএসএলটির মতো জটিল নয়
flq

15

এক্সএসএলটি জেএসএনকে যেমনটি দেখেছিল তেমন সমর্থন করে http://www.w3.org/TR/xslt-30-30/#json-র

এক্সএমএল ডিলিমিটার টোকেনগুলির জন্য কৌণিক বন্ধনী ব্যবহার করে, জেএসএন ব্রেস, বর্গাকার বন্ধনী, ... I. ই ব্যবহার করে। এক্সএমএল এর কম টোকেন স্বীকৃতি তুলনা মানে এটি ঘোষণামূলক রূপান্তরকরণের জন্য অনুকূলিত হয়েছে, অন্যদিকে তুলনা, সুইচ স্টেটমেন্টের মতো হওয়া, গতির কারণে অনুমানমূলক শাখার পূর্বাভাস ধরে নিয়েছে যে স্ক্রিপ্টিং ভাষাগুলিতে অপরিহার্য কোডটি কার্যকর। প্রত্যক্ষ ফলাফল হিসাবে, আধা-কাঠামোগত ডেটার বিভিন্ন মিশ্রণের জন্য, আপনি প্রতিক্রিয়াশীল পৃষ্ঠাগুলির অংশ হিসাবে এক্সএসএলটি এবং জাভাস্ক্রিপ্ট ইঞ্জিনগুলির কার্যকারিতাটি বেনমার্ক করতে চাইতে পারেন। নগন্য ডেটা পেলোডের জন্য, এক্সএমএল সিরিয়ালাইজেশন ছাড়াই রূপান্তরগুলি JSON এর সাথে ঠিক একইভাবে কাজ করতে পারে। ডাব্লু 3 এর সিদ্ধান্তটি আরও ভাল বিশ্লেষণের ভিত্তিতে হওয়া উচিত।


15

আমি সম্প্রতি একটি সরঞ্জাম পেয়েছি যা আমি JSON স্টাইলিংয়ের জন্য পছন্দ করি: https://github.com/twigkit/tempo । ব্যবহারের জন্য খুব সহজ সরঞ্জাম - আমার মতে এক্সএসএলটি-র তুলনায় এটি কাজ করা অনেক সহজ - এক্সপ্যাথ প্রশ্নের প্রয়োজন নেই eries


9
টেম্পো দুর্দান্ত দেখায় যদি রূপান্তরের চূড়ান্ত ফলাফল এইচটিএমএল হয়। তবে আপনি যদি কেবলমাত্র একটি অন্তর্নিহিত কাঠামোটিকে অন্য একটিতে পুনর্বিন্যস্ত করতে চান তবে চূড়ান্ত ফলাফলটি এখনও JSON। আমি এখনও এক্সপথের একটি এনালগ চাই যাতে আমি কার্যকরীভাবে রূপান্তরটি লিখতে পারি।
টোডিয়াস ঝো

1
টেম্পো খুব আকর্ষণীয় সত্যিই আপনাকে ধন্যবাদ। তবে আপনি ব্রাউজারে একটি এক্সএমএল এবং একটি এক্সএসল্ট (<? এক্সএসএল-স্টাইলশিট>) প্রেরণ করতে পারেন এবং আপনার ব্রাউজারটি কোনও এক্স কোড ছাড়াই আপনার এক্সএমএলের একটি সংজ্ঞায়িত ভিউ দেখিয়ে এক্সএমএলটিতে এক্সএসল্ট প্রয়োগ করবে। JsonT / টেম্পোর ক্ষেত্রেও এটি হওয়া উচিত।
মার্টিন মিজার


11

সরঞ্জামের অভাব বলতে প্রয়োজনের অভাবকে বোঝায় কেবল প্রশ্নটি করা। এটি লিনাক্সে এক্স বা ওয়াইয়ের জন্য সমর্থন করার জন্য প্রয়োগ করা যেতে পারে (কেন এমন সংখ্যালঘু ওএসের জন্য মানের ড্রাইভার এবং / অথবা গেমগুলি বিকাশ করতে বিরক্ত করবেন? এবং এমন কোনও ওএসের দিকে কেন মনোযোগ দিন যে বড় গেম এবং হার্ডওয়্যার সংস্থাগুলি বিকাশ করে না?)। সম্ভবত যাদের XSLT এবং JSON ব্যবহার করতে হবে তাদের কিছুটা তুচ্ছ কাজ ব্যবহার শেষ হবে: JSON কে এক্সএমএলে রূপান্তর করা। তবে এটি সর্বোত্তম সমাধান নয়, তাই না?

যখন আপনার একটি নেটিভ জেএসওএন ফর্ম্যাট থাকে এবং আপনি এটি ব্রাউজারে "ওয়াইসওয়াইগ" সম্পাদনা করতে চান, এক্সএসএলটি সমস্যার পর্যাপ্ত সমাধানের চেয়ে আরও বেশি কিছু হতে পারে। Traditionalতিহ্যবাহী জাভাস্ক্রিপ্ট প্রোগ্রামিংয়ের সাহায্যে এটি পাছায় ব্যথা হয়ে উঠতে পারে।

প্রকৃতপক্ষে, আমি এক্সএসএলটি-তে একটি "প্রস্তর-যুগ" পদ্ধতির প্রয়োগ করেছি, জাভাস্ক্রিপ্টের জন্য কিছু বেসিক কমান্ডের ব্যাখ্যা করতে সাবস্ট্রিং পার্সিং ব্যবহার করে, যেমন একটি টেমপ্লেট কল করা, শিশুদের প্রসেস করা ইত্যাদি J অবশ্যই জেএসওএন অবজেক্টের সাথে ট্রান্সফর্মেশন ইঞ্জিন বাস্তবায়নের চেয়ে অনেক সহজ than এক্সএসএলটি পার্স করার জন্য একটি পূর্ণাঙ্গ এক্সএমএল পার্সার বাস্তবায়ন করছে। সমস্যাটি হ'ল, কোনও জেএসওএন অবজেক্টকে রূপান্তর করতে এক্সএমএল টেমপ্লেটগুলি ব্যবহার করার জন্য আপনাকে টেমপ্লেটগুলির এক্সএমএল বিশ্লেষণ করতে হবে।

এক্সএমএল (বা এইচটিএমএল, বা পাঠ্য বা যাই হোক না কেন) এর সাথে একটি জেএসওএন অবজেক্টকে ট্রান্সফর্ম করার জন্য আপনাকে সিনট্যাক্স এবং রূপান্তর আদেশগুলি সনাক্ত করতে আপনাকে কোন বিশেষ অক্ষর ব্যবহার করতে হবে সে সম্পর্কে যত্ন সহকারে চিন্তা করতে হবে। অন্যথায় আপনি নিজের কাস্টম টেম্প্লেটিং ভাষার জন্য একটি পার্সার ডিজাইন করে শেষ করতে পারেন। এই পথটি অতিক্রম করে আমি আপনাকে বলতে পারি যে এটি সুন্দর নয়।

আপডেট (নভেম্বর 12, 2010): আমার পার্সারটিতে কয়েক সপ্তাহ কাজ করার পরে, আমি এটি অনুকূল করতে সক্ষম হয়েছি। টেমপ্লেটগুলি আগেই পার্স করা হয় এবং কমান্ডগুলি JSON অবজেক্ট হিসাবে সংরক্ষণ করা হয়। রূপান্তর বিধিগুলি হ'ল জেএসওএন অবজেক্টস, যখন টেমপ্লেট কোডটি এইচটিএমএল এবং শেল কোডের অনুরূপ হোমব্রিউ সিনট্যাক্সের মিশ্রণ। ডকুমেন্ট এডিটর তৈরি করতে আমি একটি জটিল জেএসওএন ডকুমেন্টকে এইচটিএমএল রূপান্তর করতে সক্ষম হয়েছি। কোডটি সম্পাদকের জন্য প্রায় 1K লাইন (এটি একটি ব্যক্তিগত প্রকল্পের জন্য তাই আমি এটি ভাগ করতে পারি না) এবং জেএসএন রূপান্তর কোডের জন্য প্রায় 990 লাইন (পুনরাবৃত্তির আদেশ, সহজ তুলনা, টেমপ্লেট কলিং, ভেরিয়েবল সংরক্ষণ এবং মূল্যায়ন অন্তর্ভুক্ত)। আমি এটি একটি এমআইটি লাইসেন্সের অধীনে প্রকাশ করার পরিকল্পনা করছি। আপনি যদি জড়িত থাকতে চান তবে আমাকে একটি মেইল ​​ফেলে দিন।


11

আমি এদিকে আমার নিজের ছোট্ট লাইব্রেরি লিখেছি, যা খুব কাছাকাছি থাকার চেষ্টা করে

5.1 প্রক্রিয়াকরণ মডেল (এক্সএসএলটি আরইসি) https://www.w3.org/TR/xslt#section-

জাভাস্ক্রিপ্ট কোডের কয়েকটি লাইনে যতটা সম্ভব সম্ভব (যেমন আমি যাই হোক না কেন)

ব্যবহারের কয়েকটি-সম্পূর্ণ-তুচ্ছ উদাহরণ এখানে দেওয়া হয়েছে ...

1. জেএসএন-টু-কিছু-মার্কআপ:

বেহালার: https://jsfiddle.net/YSharpLanguage/kj9pk8oz/10

( ডি। ডকুমেন্ট উদাহরণ (এক্সএসএলটি আরইসি দ্বারা অনুপ্রাণিত ) https://www.w3.org/TR/xslt#section- ডকুমেন্ট- উদাহরণ )

যেখানে এই:

var D1document = {
    type: "document", title: [ "Document Title" ],
    "": [
      { type: "chapter", title: [ "Chapter Title" ],
        "": [
        { type: "section", title: [ "Section Title" ],
          "": [
            { type: "para", "": [ "This is a test." ] },
            { type: "note", "": [ "This is a note." ] }
        ] },
        { type: "section", title: [ "Another Section Title" ],
          "": [
            { type: "para", "": [ "This is ", { emph: "another" }, " test." ] },
            { type: "note", "": [ "This is another note." ] }
        ] }
      ] }
    ] };

var D1toHTML = { $: [
  [ [ function(node) { return node.type === "document"; } ],
    function(root) {
      return "<html>\r\n\
  <head>\r\n\
    <title>\r\n\
      {title}\r\n".of(root) + "\
    </title>\r\n\
  </head>\r\n\
  <body>\r\n\
{*}".of(root[""].through(this)) + "\
  </body>\r\n\
</html>";
    }
  ],
  [ [ function(node) { return node.type === "chapter"; } ],
    function(chapter) {
      return "    <h2>{title}</h2>\r\n".of(chapter) + "{*}".of(chapter[""].through(this));
    }
  ],
  [ [ function(node) { return node.type === "section"; } ],
    function(section) {
      return "    <h3>{title}</h3>\r\n".of(section) + "{*}".of(section[""].through(this));
    }
  ],
  [ [ function(node) { return node.type === "para"; } ],
    function(para) {
      return "    <p>{*}</p>\r\n".of(para[""].through(this));
    }
  ],
  [ [ function(node) { return node.type === "note"; } ],
    function(note) {
      return '    <p class="note"><b>NOTE: </b>{*}</p>\r\n'.of(note[""].through(this));
    }
  ],
  [ [ function(node) { return node.emph; } ],
    function(emph) {
      return "<em>{emph}</em>".of(emph);
    }
  ]
] };

console.log(D1document.through(D1toHTML));

... দেয়:

<html>
  <head>
    <title>
      Document Title
    </title>
  </head>
  <body>
    <h2>Chapter Title</h2>
    <h3>Section Title</h3>
    <p>This is a test.</p>
    <p class="note"><b>NOTE: </b>This is a note.</p>
    <h3>Another Section Title</h3>
    <p>This is <em>another</em> test.</p>
    <p class="note"><b>NOTE: </b>This is another note.</p>
  </body>
</html>

এবং

২. JSON-to-JSON:

বেহালার: https://jsfiddle.net/YSharpLanguage/ppfmmu15/10

যেখানে এই:

// (A "Company" is just an object with a "Team")
function Company(obj) {
  return obj.team && Team(obj.team);
}

// (A "Team" is just a non-empty array that contains at least one "Member")
function Team(obj) {
  return ({ }.toString.call(obj) === "[object Array]") &&
         obj.length &&
         obj.find(function(item) { return Member(item); });
}

// (A "Member" must have first and last names, and a gender)
function Member(obj) {
  return obj.first && obj.last && obj.sex;
}

function Dude(obj) {
  return Member(obj) && (obj.sex === "Male");
}

function Girl(obj) {
  return Member(obj) && (obj.sex === "Female");
}

var data = { team: [
  { first: "John", last: "Smith", sex: "Male" },
  { first: "Vaio", last: "Sony" },
  { first: "Anna", last: "Smith", sex: "Female" },
  { first: "Peter", last: "Olsen", sex: "Male" }
] };

var TO_SOMETHING_ELSE = { $: [

  [ [ Company ],
    function(company) {
      return { some_virtual_dom: {
        the_dudes: { ul: company.team.select(Dude).through(this) },
        the_grrls: { ul: company.team.select(Girl).through(this) }
      } }
    } ],

  [ [ Member ],
    function(member) {
      return { li: "{first} {last} ({sex})".of(member) };
    } ]

] };

console.log(JSON.stringify(data.through(TO_SOMETHING_ELSE), null, 4));

... দেয়:

{
    "some_virtual_dom": {
        "the_dudes": {
            "ul": [
                {
                    "li": "John Smith (Male)"
                },
                {
                    "li": "Peter Olsen (Male)"
                }
            ]
        },
        "the_grrls": {
            "ul": [
                {
                    "li": "Anna Smith (Female)"
                }
            ]
        }
    }
}

৩. এক্সএসএলটি বনাম জাভাস্ক্রিপ্ট:

এর একটি জাভাস্ক্রিপ্ট সমতুল্য ...

এক্সএসএলটি ৩.০ আরইসি বিভাগ ১৪.৪ উদাহরণ: সাধারণ মানগুলির উপর ভিত্তি করে নোডকে গ্রুপিং করা

(at: http://jsfiddle.net/YSharpLanguage/8bqcd0ey/1) )

Cf. https://www.w3.org/TR/xslt-30/#grouping-examples

কোথায়...

var cities = [
  { name: "Milano",  country: "Italia",      pop: 5 },
  { name: "Paris",   country: "France",      pop: 7 },
  { name: "München", country: "Deutschland", pop: 4 },
  { name: "Lyon",    country: "France",      pop: 2 },
  { name: "Venezia", country: "Italia",      pop: 1 }
];

/*
  Cf.
  XSLT 3.0 REC Section 14.4
  Example: Grouping Nodes based on Common Values

  https://www.w3.org/TR/xslt-30/#grouping-examples
*/
var output = "<table>\r\n\
  <tr>\r\n\
    <th>Position</th>\r\n\
    <th>Country</th>\r\n\
    <th>City List</th>\r\n\
    <th>Population</th>\r\n\
  </tr>{*}\r\n\
</table>".of
  (
    cities.select().groupBy("country")(function(byCountry, index) {
      var country = byCountry[0],
          cities = byCountry[1].select().orderBy("name");
      return "\r\n\
  <tr>\r\n\
    <td>{position}</td>\r\n\
    <td>{country}</td>\r\n\
    <td>{cities}</td>\r\n\
    <td>{population}</td>\r\n\
  </tr>".
        of({ position: index + 1, country: country,
             cities: cities.map(function(city) { return city.name; }).join(", "),
             population: cities.reduce(function(sum, city) { return sum += city.pop; }, 0)
           });
    })
  );

... দেয়:

<table>
  <tr>
    <th>Position</th>
    <th>Country</th>
    <th>City List</th>
    <th>Population</th>
  </tr>
  <tr>
    <td>1</td>
    <td>Italia</td>
    <td>Milano, Venezia</td>
    <td>6</td>
  </tr>
  <tr>
    <td>2</td>
    <td>France</td>
    <td>Lyon, Paris</td>
    <td>9</td>
  </tr>
  <tr>
    <td>3</td>
    <td>Deutschland</td>
    <td>München</td>
    <td>4</td>
  </tr>
</table>

৪. জেএসোনিক বনাম জাভাস্ক্রিপ্ট:

এর একটি জাভাস্ক্রিপ্ট সমতুল্য ...

জেএসনিক মামলাগুলি ব্যবহার করুন বিভাগ 1.1.2। জেএসএনের জন্য গ্রুপিং কোয়েরি

(এ: https://jsfiddle.net/YSharpLanguage/hvo24hmk/3 )

Cf. http://jsoniq.org/docs/JSONiq-usecases/html-single/index.html#jsongrouping

কোথায়...

/*
  1.1.2. Grouping Queries for JSON
  http://jsoniq.org/docs/JSONiq-usecases/html-single/index.html#jsongrouping
*/
var sales = [
  { "product" : "broiler", "store number" : 1, "quantity" : 20  },
  { "product" : "toaster", "store number" : 2, "quantity" : 100 },
  { "product" : "toaster", "store number" : 2, "quantity" : 50 },
  { "product" : "toaster", "store number" : 3, "quantity" : 50 },
  { "product" : "blender", "store number" : 3, "quantity" : 100 },
  { "product" : "blender", "store number" : 3, "quantity" : 150 },
  { "product" : "socks", "store number" : 1, "quantity" : 500 },
  { "product" : "socks", "store number" : 2, "quantity" : 10 },
  { "product" : "shirt", "store number" : 3, "quantity" : 10 }
];

var products = [
  { "name" : "broiler", "category" : "kitchen", "price" : 100, "cost" : 70 },
  { "name" : "toaster", "category" : "kitchen", "price" : 30, "cost" : 10 },
  { "name" : "blender", "category" : "kitchen", "price" : 50, "cost" : 25 },
  {  "name" : "socks", "category" : "clothes", "price" : 5, "cost" : 2 },
  { "name" : "shirt", "category" : "clothes", "price" : 10, "cost" : 3 }
];

var stores = [
  { "store number" : 1, "state" : "CA" },
  { "store number" : 2, "state" : "CA" },
  { "store number" : 3, "state" : "MA" },
  { "store number" : 4, "state" : "MA" }
];

var nestedGroupingAndAggregate = stores.select().orderBy("state").groupBy("state")
( function(byState) {
    var state = byState[0],
        stateStores = byState[1];
    byState = { };
    return (
      (
        byState[state] =
        products.select().orderBy("category").groupBy("category")
        ( function(byCategory) {
            var category = byCategory[0],
                categoryProducts = byCategory[1],
                categorySales = sales.filter(function(sale) {
                  return stateStores.find(function(store) { return sale["store number"] === store["store number"]; }) &&
                         categoryProducts.find(function(product) { return sale.product === product.name; });
                });
            byCategory = { };
            return (
              (
                byCategory[category] =
                categorySales.select().orderBy("product").groupBy("product")
                ( function(byProduct) {
                    var soldProduct = byProduct[0],
                        soldQuantities = byProduct[1];
                    byProduct = { };
                    return (
                      (
                        byProduct[soldProduct] =
                        soldQuantities.reduce(function(sum, sale) { return sum += sale.quantity; }, 0)
                      ),
                      byProduct
                    );
                } ) // byProduct()
              ),
              byCategory
            );
        } ) // byCategory()
      ),
      byState
    );
} ); // byState()

... দেয়:

[
  {
    "CA": [
      {
        "clothes": [
          {
            "socks": 510
          }
        ]
      },
      {
        "kitchen": [
          {
            "broiler": 20
          },
          {
            "toaster": 150
          }
        ]
      }
    ]
  },
  {
    "MA": [
      {
        "clothes": [
          {
            "shirt": 10
          }
        ]
      },
      {
        "kitchen": [
          {
            "blender": 250
          },
          {
            "toaster": 50
          }
        ]
      }
    ]
  }
]

এটি JSONPath কব্জিটির সীমাবদ্ধতাগুলি অতিক্রম করতেও কার্যকর। পূর্বসূর অক্ষের বিরুদ্ধে জিজ্ঞাসাবাদ করা, যেমন এই এসও প্রশ্নের উত্থাপন (এবং অবশ্যই অন্যরা)।

উদাহরণস্বরূপ, কীভাবে কোনও ব্র্যান্ড আইডি জেনে কোনও মুদি আইটেমের ছাড় পাবেন

{
 "prods": [
    {
        "info": {
              "rate": 85
                },
        "grocery": [
                 {
                  "brand": "C",
                  "brand_id": "984"
                 },
                 {
                  "brand": "D",
                  "brand_id": "254"
                 }
                 ],
         "discount": "15"
    },
    {
        "info": {
              "rate": 100
                },
        "grocery": [
                 {
                  "brand": "A",
                  "brand_id": "983"
                 },
                 {
                  "brand": "B",
                  "brand_id": "253"
                 }
                 ],
         "discount": "20"
     }
 ]
}

?

একটি সম্ভাব্য সমাধান হ'ল:

var products = {
     "prods": [
        {
            "info": {
                  "rate": 85
                    },
            "grocery": [
                     {
                      "brand": "C",
                      "brand_id": "984"
                     },
                     {
                      "brand": "D",
                      "brand_id": "254"
                     }
                     ],
             "discount": "15"
        },
        {
            "info": {
                  "rate": 100
                    },
            "grocery": [
                     {
                      "brand": "A",
                      "brand_id": "983"
                     },
                     {
                      "brand": "B",
                      "brand_id": "253"
                     }
                     ],
             "discount": "20"
         }
     ]
};

function GroceryItem(obj) {
  return (typeof obj.brand === "string") && (typeof obj.brand_id === "string");
}

    // last parameter set to "true", to grab all the "GroceryItem" instances
    // at any depth:
var itemsAndDiscounts = [ products ].nodeset(GroceryItem, true).
    map(
      function(node) {
        var item = node.value, // node.value: the current "GroceryItem" (aka "$.prods[*].grocery[*]")

            discount = node.parent. // node.parent: the array of "GroceryItem" (aka "$.prods[*].grocery")
                       parent. // node.parent.parent: the product (aka "$.prods[*]")
                       discount; // node.parent.parent.discount: the product discount

        // finally, project into an easy-to-filter form:
        return { id: item.brand_id, discount: discount };
      }
    ),
    discountOfItem983;

discountOfItem983 = itemsAndDiscounts.
  filter
  (
    function(mapped) {
      return mapped.id === "983";
    }
  )
  [0].discount;

console.log("Discount of #983: " + discountOfItem983);

... যা দেয়:

Discount of #983: 20

'আছে HTH,


10

সেখানে এখন! আমি সম্প্রতি ঠিক এই উদ্দেশ্যে একটি লাইব্রেরি, জেসন-ট্রান্সফর্ম তৈরি করেছি :

https://github.com/ColinEberhardt/json-transforms

এটি এক্সএসএলটি দ্বারা সরাসরি অনুপ্রাণিত জাসপাথ , এক্সপ্যাটে মডেল হওয়া ডিএসএল এবং একটি পুনরাবৃত্ত প্যাটার্নের মিলের পদ্ধতির সংমিশ্রণ ব্যবহার করে।

এখানে একটি দ্রুত উদাহরণ। নিম্নলিখিত JSON অবজেক্ট দেওয়া:

const json = {
  "automobiles": [
    { "maker": "Nissan", "model": "Teana", "year": 2011 },
    { "maker": "Honda", "model": "Jazz", "year": 2010 },
    { "maker": "Honda", "model": "Civic", "year": 2007 },
    { "maker": "Toyota", "model": "Yaris", "year": 2008 },
    { "maker": "Honda", "model": "Accord", "year": 2011 }
  ]
};

এখানে একটি রূপান্তর:

const jsont = require('json-transforms');
const rules = [
  jsont.pathRule(
    '.automobiles{.maker === "Honda"}', d => ({
      Honda: d.runner()
    })
  ),
  jsont.pathRule(
    '.{.maker}', d => ({
      model: d.match.model,
      year: d.match.year
    })
  ),
  jsont.identity
];

const transformed  = jsont.transform(json, rules);

নিম্নলিখিত আউটপুট:

{
  "Honda": [
    { "model": "Jazz", "year": 2010 },
    { "model": "Civic", "year": 2007 },
    { "model": "Accord", "year": 2011 }
  ]
}

এই রূপান্তরটি তিনটি বিধি দ্বারা গঠিত। প্রথমে কোনও কোনও অটোমোবাইলের সাথে মেলে যা হন্ডা দ্বারা তৈরি করা হয়েছে, কোনও সংখ্যার সাথে কোনও বস্তু নির্গমন করে Honda, তারপরে পুনরাবৃত্তির সাথে মিলে। দ্বিতীয় বিধিটি কোনও সংখ্যার সাথে কোনও সংখ্যার সাথে মেলে maker, modelএবং yearবৈশিষ্ট্যগুলি আউটপুট করে । ফাইনালটি হ'ল পরিচয় রূপান্তর যা পুনরাবৃত্তভাবে মেলে।


9

পুরানো প্রশ্নের আরও একটি নতুন উত্তর হিসাবে, আমি DefiantJS এ একবার দেখার পরামর্শ দেব । এটি একটি XSLT নয় সমতুল্য তাদেরকে JSON জন্য, এটি হল তাদেরকে JSON জন্য XSLT। ডকুমেন্টেশনের "টেম্প্লেটিং" বিভাগে এই উদাহরণটি অন্তর্ভুক্ত রয়েছে:

<!-- Defiant template -->
<script type="defiant/xsl-template">
    <xsl:template name="books_template">
        <xsl:for-each select="//movie">
            <xsl:value-of select="title"/><br/>
        </xsl:for-each>
    </xsl:template>
</script>

<script type="text/javascript">

var data = {
        "movie": [
            {"title": "The Usual Suspects"},
            {"title": "Pulp Fiction"},
            {"title": "Independence Day"}
        ]
    },
    htm = Defiant.render('books_template', data);

console.log(htm);
// The Usual Suspects<br>
// Pulp Fiction<br>
// Independence Day<br>

5

আমি সেখানে প্রচুর পরিমাণে জাভাস্ক্রিপ্ট টেম্প্লেটিং ইঞ্জিনগুলি এবং তাদের সমস্ত ইনলাইন এইচটিএমএল-টেম্পলেট, বিভিন্ন মার্কআপ শৈলী ইত্যাদি দেখে সত্যিই ক্লান্ত হয়ে পড়েছি এবং JSON ডেটা স্ট্রাকচারের জন্য XSLT ফর্ম্যাটিং সক্ষম করে এমন একটি ছোট লাইব্রেরি তৈরির সিদ্ধান্ত নিয়েছি । রকেট বিজ্ঞান কোনওভাবেই নয় - এটি কেবল জেএসওএনটি এক্সএমএলে বিশ্লেষণ করেছে এবং তারপরে একটি এক্সএসএলটি ডকুমেন্ট দিয়ে ফর্ম্যাট করা হয়েছে। এটি খুব দ্রুত, ক্রোমে জাভাস্ক্রিপ্ট টেম্পলেট ইঞ্জিনগুলির মতো দ্রুত নয়, তবে বেশিরভাগ অন্যান্য ব্রাউজারে এটি কমপক্ষে বৃহত্তর ডেটা স্ট্রাকচারের জন্য জেএস ইঞ্জিন বিকল্প হিসাবে তত দ্রুত।


4

আমি উট রুটের উমরশাল (xMLjson) -> থেকে (xlst) -> মার্শাল (এক্সএমএলজসন) ব্যবহার করছি। যথেষ্ট দক্ষ (যদিও 100% নিখুঁত নয়) তবে সহজ, যদি আপনি ইতিমধ্যে উট ব্যবহার করছেন।


3

JSONiq যেমন একটি মান এবং Zorba একটি ওপেন সোর্স সি ++ বাস্তবায়ন। জেএসওনিকে এক্সকিউরি হিসাবেও দেখা যেতে পারে যার ফলে জেএসএনকে একটি নেটিভ ডেটা টাইপ হিসাবে যুক্ত করা যায়।


2

এক্সএসএলটি ব্যবহার করে জেএসএন রূপান্তর করা খুব সম্ভব: আপনার জেএসওএন 2 এসএক্স ডিসরিয়ালাইজার এবং স্যাক্স 2 জসন সিরিয়ালাইজার দরকার need

জাভাতে নমুনা কোড: http://www.gerixsoft.com/blog/json/xslt4json


2

ইয়াট ( https://github.com/pasaran/yate ) এক্সএসএলটি-র পরে বিশেষভাবে ডিজাইন করা হয়েছে, এতে জাপাথ (জেএসের জন্য প্রাকৃতিক এক্সপথ সমতুল্য) রয়েছে, জাভাস্ক্রিপ্টে সংকলিত হয়েছে এবং উত্পাদন ব্যবহারের বেশ ইতিহাস রয়েছে। এটি ব্যবহারিকভাবে অননুমোদিত, কিন্তু নমুনা এবং পরীক্ষার মাধ্যমে পড়া যথেষ্ট হওয়া উচিত।


2

জেএসএলটি এক্সএসএলটির সমতুল্য একটি জেএসএন- এর খুব কাছাকাছি। এটি রূপান্তরকরণের ভাষা যেখানে আপনি জেএসএন সিনট্যাক্সে আউটপুটের নির্দিষ্ট অংশটি লেখেন, তারপরে আপনি টেমপ্লেটে সন্নিবেশ করতে চান এমন মানগুলি গণনা করতে অভিব্যক্তি সন্নিবেশ করুন।

একটি উদাহরণ:

{
  "time": round(parse-time(.published, "yyyy-MM-dd'T'HH:mm:ssX") * 1000),
  "device_manufacturer": .device.manufacturer,
  "device_model": .device.model,
  "language": .device.acceptLanguage
}

এটি জ্যাকসনের উপরে জাভাতে প্রয়োগ করা হয়েছে।


0

এটির প্রয়োজনীয়তা খুব বেশি নিশ্চিত নয় এবং আমার কাছে সরঞ্জামের অভাব প্রয়োজনের অভাবকে বোঝায়। জেএসওএনকে বস্তু হিসাবে সর্বোত্তমভাবে প্রক্রিয়া করা হয় (এটি যেভাবে যাইহোক জেএসে করা হয়) এবং আপনি সাধারণত রূপান্তরগুলি করতে অবজেক্টগুলির ভাষা ব্যবহার করেন (জেএসএন থেকে তৈরি জাভা অবজেক্টের জন্য জাভা, পার্ল, পাইথন, পার্ল, সি #, পিএইচপি এবং আরও চালু). কেবলমাত্র সাধারণ অ্যাসাইনমেন্ট (বা সেট, পেতে), লুপিং এবং আরও অনেক কিছু নিয়ে।

আমার অর্থ, এক্সএসএলটি হ'ল অন্য ভাষা, এবং এটির প্রয়োজনের একটি কারণ হ'ল এক্সএমএল কোনও অবজেক্ট স্বরলিপি নয় এবং সুতরাং প্রোগ্রামিং ভাষার বস্তুগুলি হুবহু ফিট হয় না (শ্রেণিবদ্ধ xML মডেল এবং অবজেক্ট / স্ট্রাক্টের মধ্যে প্রতিবন্ধকতা)।


ফেসবুকের এক্সএমএল থেকে জসনে রূপান্তরিত হওয়ার পরে, আমার এইরকম একটি সরঞ্জামের খুব প্রয়োজন।
জো সোল-ব্রিংগার 31'11

আপনি কি ব্যবহারের ক্ষেত্রে ভাবছেন? আপনি কীভাবে এক্সএমএল প্রতিক্রিয়াগুলিকে এইচটিএমএল হিসাবে রেন্ডার করবেন এটি কী একইভাবে জেএসএন সামগ্রী সরবরাহ করতে সক্ষম হবে? নাকি আলাদা কিছু?
স্ট্যাক্সমান

আমি আশ্চর্য হয়েছি যে এক্সএসএলটি টাইপ পদ্ধতি ব্যবহার করে বনাম এক্সএসএলটি টাইপ পদ্ধতি ব্যবহার করে এবং যেখানে উত্স জেএসওএন-এর কিছু তথ্য স্থানান্তরিত হয়েছে সেখানে জেএসএএন রূপান্তরকরণের প্রোগ্রামিক অবজেক্ট ওয়ে (ডাব্লু / লুপিং, প্রয়োজনমতো ব্রাঞ্চিং ইত্যাদি) কীভাবে পরিচালনা করা সহজ হবে? লক্ষ্য JSON- এ কিছু নোড আপ / ডাউন (কেবল কেবল কাঠামোর সরাসরি অনুলিপি নয়) এবং বলুন যেখানে উত্স বা টার্গেট জেএসওএন-তে কোনও নির্দিষ্ট নোড JSON এর মধ্যে অবজেক্ট অ্যারের অংশ এবং অন্যান্য JSON (উত্স / লক্ষ্য) নয় ।
ডেভিড

স্বাচ্ছন্দ্য খুব সাবজেক্টিভ, সুতরাং আমি সন্দেহ করি যে এটির বেশিরভাগটির সাথে যা করা হয় তার সাথে সম্পর্কযুক্ত।
স্ট্যাক্সমান

জেএসএন রূপান্তরের জন্য অবশ্যই প্রয়োজন আছে, আপনি ঠিক বলেছেন এটি বেশিরভাগ ক্ষেত্রে জেএসের দ্বারা দেখা হয়েছে। :-) তবে আপনি কি জিকিউ - হালকা ও নমনীয় কমান্ড-লাইন জেএসএন প্রসেসর দেখেছেন ? বিশেষত যখন জেএস উপলভ্য নয়। আমি বলব রূপান্তর নাটকীয়ভাবে সহজ এবং আরও স্বজ্ঞাত, এমনকি জেএস থেকেও। উদাহরণস্বরূপ ক্ষেত্রগুলি বের করতে nameএবং address[.name, .address]
এটিকে

0

আপনি কেন মিস্টার ডেটা কভারার ব্যবহার করে জেএসএনকে এক্সএমএলে রূপান্তর করবেন না , এক্সএসএলটি ব্যবহার করে ট্রান্সফর্ম করুন এবং তারপরে আবার এটি ব্যবহার করে জেএসএনে পরিবর্তন করুন।


1
এটি কোনও বিকল্প নয় যদি আপনি নিজের কোডটি আপনার জন্য ভাল পারফরম্যান্সের মাধ্যমে করতে চান।
ওরাড

0

এক্সএসএলটি-র ম্যাচিং এক্সপ্রেশন এবং পুনরাবৃত্ত টেম্পলেটগুলির পিছনে পরিচিত এবং ঘোষণামূলক প্যাটার্ন সহ খাঁটি জাভাস্ক্রিপ্ট ব্যবহার করার জন্য একটি কার্যক্ষম ডুডল / ধারণার প্রমাণের জন্য, দেখুন https://gist.github.com/brettz9/0e661b3093764f496e36 দেখুন

(জেএসওএন-এর জন্যও একই ধরণের পন্থা নেওয়া যেতে পারে))

নোট করুন যে ডেমোটি ফায়ারফক্সে টেমপ্লেট প্রকাশের সুবিধার জন্য জাভাস্ক্রিপ্ট ১.৮ এক্সপ্রেশন ক্লোজারের উপরও নির্ভর করে (পদ্ধতিগুলির জন্য ES6 সংক্ষিপ্ত ফর্মটি প্রয়োগ না হওয়া পর্যন্ত)।

দাবি অস্বীকার: এটি আমার নিজস্ব কোড।


0

আমি আমার জ্যাকসন ভিত্তিক জসন প্রসেসিং কাঠামোর জন্য একটি ডম অ্যাডাপ্টার লিখেছিলাম অনেক আগে wrote এটি nu.xom লাইব্রেরি ব্যবহার করে। ফলস্বরূপ ডোম গাছ জাভা এক্সপাথ এবং এক্সএসএলটি সুবিধার সাথে কাজ করে। আমি কিছু বাস্তবায়ন পছন্দ করেছি যা বেশ সোজা। উদাহরণস্বরূপ, রুট নোডকে সর্বদা "রুট" বলা হয়, অ্যারেগুলি একটি লি নোডে লি সাব সাব এলিমেন্টগুলির সাথে চলে (যেমন এইচটিএমএল) এবং অন্য সমস্ত কিছুই আদিম মান বা অন্য কোনও বস্তুর নোড সহ একটি উপ নোড।

JsonXmlConverter.java

ব্যবহার: JsonObject sampleJson = sampleJson(); org.w3c.dom.Document domNode = JsonXmlConverter.getW3cDocument(sampleJson, "root");


0

এক্সেসএলটিতে পার্সার তৈরি করতে পার্সার জেনারেটরটি ব্যবহার করা যা জেএসওনকে পার্স করে এবং একটি এক্সএমএল আউটপুট উত্পাদন করে সেগুলির জন্য এখনও একটি পদ্ধতির দেওয়া হয়নি।

এক্সএমএল সম্মেলনে প্রচুর উল্লেখ করা একটি বিকল্প হ'ল রেক্স পার্সার জেনারেটর ( http://www.bottlecaps.de/rex/ ) - যদিও সাইটে সম্পূর্ণরূপে নথিভুক্ত, রেসিপিগুলি অনুসন্ধানে পাওয়া যায়।


0

জেএসএনের সাথে এক্সএসএলটি ব্যবহার করা সম্ভব হতে পারে। এক্সপাথের ভার্সন 3 (3.1) এক্সএসএলটি (3.0) এবং এক্সকুয়েরি (3.1) কোনওভাবে জেএসএনকে সমর্থন করে। এটি স্যাকসনের বাণিজ্যিক সংস্করণে উপলভ্য বলে মনে হচ্ছে এবং এক পর্যায়ে এইচ ভার্সনে অন্তর্ভুক্ত থাকতে পারে। https://www.saxonica.com/html/documentation/functions/fn/parse-json.html

-

বিকল্প সমাধান থেকে আমি কী আশা করব:

আমি ডেটাগুলির সাথে একটি মিলের সেট আনতে এবং JSON বা পাঠ্য আউটপুট আনতে JSON সক্ষম করতে চাই।

যথেচ্ছ বৈশিষ্ট্যে অ্যাক্সেস করুন এবং মানগুলি মূল্যায়ন করুন

শর্তসাপেক্ষ যুক্তি জন্য সমর্থন

আমি চাই চাই যে রূপান্তর স্ক্রিপ্টগুলি সরঞ্জাম, পাঠ্য ভিত্তিক, এবং সাধারণত একটি সাধারণভাবে ব্যবহৃত ভাষা থেকে বাহ্যিক হোক।

সম্ভাব্য বিকল্প?

আমি ভাবছি যে এসকিউএল একটি উপযুক্ত বিকল্প হতে পারে যদি। https://docs.microsoft.com/en-us/sql/relational-databases/json/json-data-sql-server

বিকল্প সরঞ্জামটি JSON এবং এক্সএমএল https://docs.microsoft.com/en-us/sql/relational-databases/xML/openxml-sql-server পরিচালনা করতে পারলে ভাল লাগবে

আমি এখনও এসসিএল-তে ব্যবহৃত এক্সএসএলটি স্ক্রিপ্টগুলি রূপান্তর করার চেষ্টা করি নি, বা এখনও এই বিকল্পটি পুরোপুরি মূল্যায়ন করেছি, তবে আমি আরও শীঘ্রই এটি দেখার আশা করি। এখনও কিছু চিন্তা।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.