如何序列化JSON对象中的JSON字符串

时间:2017-12-04 16:21:38

标签: jquery json reactjs asp.net-core-mvc

我有一个包含属性“Data”的对象。此属性以Json格式保存其他元数据。

但是,我现在需要将整个对象作为Json字符串发送到网页。我正在使用带有以下代码的.Net Core 2.0

//============================================================+
// File name   : example_045.php
// Begin       : 2008-03-04
// Last Update : 2013-05-14
//
// Description : Example 045 for TCPDF class
//               Bookmarks and Table of Content
//
/ / Author: Nicola Asuni
//
// (c) Copyright:
//               Nicola Asuni
//               Tecnick.com LTD
//               www.tecnick.com
//               info@tecnick.com
 //============================================================+

 /**
 * Creates an example PDF TEST document using TCPDF
 * @package com.tecnick.tcpdf
 * @abstract TCPDF - Example: Bookmarks and Table of Content
 * @author Nicola Asuni
 * @since 2008-03-04
 */

 // Include the main TCPDF library (search for installation path).
  require_once('tcpdf_include.php');

 // create new PDF document
 $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

 // set document information
 $pdf->SetCreator(PDF_CREATOR);
 $pdf->SetAuthor('Nicola Asuni');
 $pdf->SetTitle('TCPDF Example 045');
 $pdf->SetSubject('TCPDF Tutorial');
 $pdf->SetKeywords('TCPDF, PDF, example, test, guide');

  // set default header data
  $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, 
  PDF_HEADER_TITLE.' 045', PDF_HEADER_STRING);

  // set header and footer fonts
   $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
   $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

   // set default monospaced font
   $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

   // set margins
  $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
  $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
   $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

  // set auto page breaks
  $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

  // set image scale factor
  $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

  // set some language-dependent strings (optional)
  if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
require_once(dirname(__FILE__).'/lang/eng.php');
$pdf->setLanguageArray($l);
  }

  // ---------------------------------------------------------

  // set font
  $pdf->SetFont('times', 'B', 20);

  // add a page
  $pdf->AddPage();

   // set a bookmark for the current position
  $pdf->Bookmark('Chapter 1', 0, 0, '', 'B', array(0,64,128));

  // print a line using Cell()
   $pdf->Cell(0, 10, 'Chapter 1', 0, 1, 'L');

  // Create a fixed link to the first page using the * character
   $index_link = $pdf->AddLink();
    $pdf->SetLink($index_link, 0, '*1');
    $pdf->Cell(0, 10, 'Link to INDEX', 0, 1, 'R', false, $index_link);

    $pdf->AddPage();
    $pdf->Bookmark('Paragraph 1.1', 1, 0, '', '', array(128,0,0));
    $pdf->Cell(0, 10, 'Paragraph 1.1', 0, 1, 'L');

    $pdf->AddPage();
    $pdf->Bookmark('Paragraph 1.2', 1, 0, '', '', array(128,0,0));
    $pdf->Cell(0, 10, 'Paragraph 1.2', 0, 1, 'L');

    $pdf->AddPage();
    $pdf->Bookmark('Sub-Paragraph 1.2.1', 2, 0, '', 'I', array(0,128,0));
    $pdf->Cell(0, 10, 'Sub-Paragraph 1.2.1', 0, 1, 'L');

     $pdf->AddPage();
     $pdf->Bookmark('Paragraph 1.3', 1, 0, '', '', array(128,0,0));
     $pdf->Cell(0, 10, 'Paragraph 1.3', 0, 1, 'L');

      // fixed link to the first page using the * character
      $html = '<a href="#*1" style="color:blue;">link to INDEX (page 1)</a>';
     $pdf->writeHTML($html, true, false, true, false, '');


    // add some pages and bookmarks
     for ($i = 2; $i < 12; $i++) {
        $pdf->AddPage();
        $pdf->Bookmark('Chapter '.$i, 0, 0, '', 'B', array(0,64,128));
         $pdf->Cell(0, 10, 'Chapter '.$i, 0, 1, 'L');
      }

      // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

       // add a new page for TOC
       $pdf->addTOCPage();

      // write the TOC title
      $pdf->SetFont('times', 'B', 16);
       $pdf->MultiCell(0, 0, 'Table Of Content', 0, 'C', 0, 1, '', '', true, 0);
       $pdf->Ln();

      $pdf->SetFont('dejavusans', '', 12);

      // add a simple Table Of Content at first page
       // (check the example n. 59 for the HTML version)
        $pdf->addTOC(1, 'courier', '.', 'INDEX', 'B', array(128,0,0));

           // end of TOC page
            $pdf->endTOCPage();

        // ---------------------------------------------------------

     //Close and output PDF document
     $pdf->Output('example_045.pdf', 'I');

          //============================================================+
       // END OF FILE
         //============================================================+

在StartUp.ConfigureService中我也有以下

var content = JsonConvert.SerializeObject(model);
content = content.Replace("\\r\\n", "");
return View("Index", content);

不幸的是,我现在正在

未捕获的SyntaxError:位于3159的JSON中的意外的令牌i     在JSON.parse()

如何确保我的Data属性在实际需要之前不被视为Json(在这种情况下,我将使用JQuery对我需要的位进行反序列化)

我正在返回的Json字符串看起来像是

services.AddMvc().AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());

显然我有引用问题.....

由于

1 个答案:

答案 0 :(得分:0)

解决了这个问题。

我只需要在数据属性Json中转义双引号,以便完整的Json返回

{content:"this", foo: "bar", data:"[\"array1\",\"array2\",\"array3\"]" }