কৌণিক 2 পাইপ যা JSON অবজেক্টকে সুন্দর-মুদ্রিত JSON এ রূপান্তর করে


105

একটি কৌণিক 2 পাইপ লেখার চেষ্টা করছে যা একটি JSON অবজেক্ট স্ট্রিং নেবে এবং এটি ব্যবহারকারীর কাছে প্রদর্শন করতে সুন্দর-মুদ্রিত / ফর্ম্যাট করে।

উদাহরণস্বরূপ, এটি এটি গ্রহণ করবে:

id "আইডি": 1, "সংখ্যা": "কে 3483483344", "রাষ্ট্র": "সিএ", "সক্রিয়": সত্য}

এবং এইচটিএমএলে প্রদর্শিত হলে এর মতো দেখতে এমন কিছু ফিরে আসুন:

এখানে চিত্র বর্ণনা লিখুন

সুতরাং আমার দৃষ্টিতে আমার এমন কিছু থাকতে পারে:

<td> {{ record.jsonData | prettyprint }} </td>

4
দেখে মনে হচ্ছে আপনি একটি কাস্টম পাইপ তৈরি করতে চান। এখানে কিছু ডকুমেন্টেশন রয়েছে: কৌণিক.ই.ও . / ডকস / সেটস / স্লেস্ট / গাইড / পাইপস html#!# কাস্টম- পাইপস । এটি চেষ্টা করে দেখুন এবং যদি আপনি সমস্যাগুলির মধ্যে চলে যান তবে নির্দ্বিধায় আরও একটি নির্দিষ্ট প্রশ্ন পোস্ট করতে পারেন
ড্যানায়মাচাইন

উত্তর:


312

আমি অন্তর্নির্মিত jsonপাইপ ব্যবহার করে এটি করার জন্য আরও সহজ উপায় যুক্ত করতে চাই :

<pre>{{data | json}}</pre>

এইভাবে, বিন্যাসটি সংরক্ষণ করা হয়।


ধন্যবাদ এটি নিখুঁত!
লরেন্ট

5
এতটাই স্পষ্ট ছিল যে আমি আপনাকে একটি বক্তব্য দিয়েছিলাম কারণ এটি অনুসন্ধানে আমি লজ্জা পাচ্ছি: পি
কেপি

4
@ শানে হু, অন্তর্নির্মিত জসন পাইপ কাজ করছে না। আমি জসনকে সুন্দর করার জন্য স্ট্রিং ব্যবহার করছি। দয়া করে এই লিঙ্কটি দিয়ে যান যা আমি প্রশ্ন উত্থাপন করেছি। stackoverflow.com/questions/57405561/…
ভেঙ্কটেশ্বরান

সুতরাং এটি কেস-সংবেদনশীল। :(
বিভোর দুবে

4
শীতল। নোট ফর্ম্যাটিং প্রয়োজন যে <pre>এবং যেমন সাথে কাজ করবে না <p>, <span>ইত্যাদি
Jeppe

22

আমি এটির জন্য একটি কাস্টম পাইপ তৈরি করব:

@Pipe({
  name: 'prettyprint'
})
export class PrettyPrintPipe implements PipeTransform {
  transform(val) {
    return JSON.stringify(val, null, 2)
      .replace(' ', '&nbsp;')
      .replace('\n', '<br/>');
  }
}

এবং এটি এইভাবে ব্যবহার করুন:

@Component({
  selector: 'my-app',
  template: `
    <div [innerHTML]="obj | prettyprint"></div>
  `,
  pipes: [ PrettyPrintPipe ]
})
export class AppComponent {
  obj = {
    test: 'testttt',
    name: 'nameeee'
  }
}

এই স্ট্যাকব্লিটজ দেখুন: https://stackblitz.com/edit/angular- ব্যাখ্যা প্রিন্ট


কাজ করছে! আমার কাছে একটি জসন স্ট্রিং ছিল, কোনও জসন অবজেক্ট ছিল না, তাই JSON.stringify কল করার আগে আমাকে কেবল এই লাইনটি যুক্ত করতে হয়েছিল: var jsonObject = JSON.parse (jsonString);
ডেরেক

অপ্রত্যাশিত বাক্য গঠন, আমি আশা করি ব্যবহারটি আরও একটি স্ট্যান্ডার্ড পাইপ ব্যবহারের মতো হবে: <div>{{obj | prettyprint }}</div> তবে এটি কার্যকর হয়েছে!
পল গর্বাস

4
@ শানে-হু সুস্পষ্টভাবে উল্লেখ করেছেন যে, এখানে একটি অন্তর্নির্মিত jsonপাইপ রয়েছে, যেমনটি কৌনিক 1 তে রয়েছে
ডেভিড সাউদার

আপনার অনুপস্থিত implements PipeTransformপরেexport class PrettyPrintPipe
ম্যাথিয়াসস্মার

4
কেন এটি গৃহীত অ্যাঞ্জার নয়? এটি গৃহীত উত্তরগুলির মতো নয়, জিজ্ঞাসিত প্রশ্নের উত্তর দেয়
ডেভেজোয়াম

4

গুগলে এটি প্রথম ফলাফল হিসাবে, আমাকে দ্রুত যোগ করতে দাও:

  • আপনার যদি যথাযথ বিন্যাস ছাড়াই JSON মুদ্রণের প্রয়োজন হয়, jsonশেন সুস দ্বারা প্রস্তাবিত বিল্ট -ইন পাইপটি পুরোপুরি কাজ করে:<pre>{{data | json}}</pre>

  • তবে, আপনি যদি অন্য কোনও আউটপুট পেতে চান তবে থিয়েরি টেম্প্লিয়ারের পরামর্শ অনুযায়ী আপনার নিজের পাইপ তৈরি করতে হবে:

    1. ng g generate pipe prettyjson
    2. সুন্দরজসন.পাইপ.সেটে:
import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'prettyjson'
})
export class PrettyjsonPipe implements PipeTransform {

  transform(value: any, ...args: any[]): any {
    return JSON.stringify(value, null, 2)
    .replace(/ /g, '&nbsp;') // note the usage of `/ /g` instead of `' '` in order to replace all occurences
    .replace(/\n/g, '<br/>'); // same here
  }

}
  1. শেষ অবধি, এবং যেহেতু আমরা এইচটিএমএল বিষয়বস্তু ফিরিয়েছি, পাইপটি কোনও innerHTMLফাংশনের অভ্যন্তরে অবশ্যই ব্যবহার করা উচিত :
<div [innerHTML]="data | prettyjson"></div>

0

যেহেতু আমার ভেরিয়েবলটি এনজিএমডেলের সাথে দু'ভাবে বেঁধে রয়েছে, তাই আমি এটি এইচটিএমএলে করতে পারিনি। আমি উপাদানটি ব্যবহার করেছি JSON.stringify(displayValue, null, 2) এবং এটি কাজটি করেছে।

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