// Copyright © 2019 The CefSharp Authors. All rights reserved. // // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. using System; using System.IO; using System.Runtime.Serialization.Json; using System.Text; namespace CefSharp.Web { /// /// Represents a JsonString that is converted to a V8 Object /// Used as a return type of bound methods /// public class JsonString { public string Json { get; private set; } /// /// Default constructor /// /// JSON string public JsonString(string json) { if (json == null) { throw new ArgumentNullException("json"); } Json = json; } /// /// Create a JsonString from the specfied object using the build in /// /// object to seriaize /// optional settings /// If is null then return nulls otherwise a JsonString. public static JsonString FromObject(object obj, DataContractJsonSerializerSettings settings = null) { if (obj == null) { return null; } using (var ms = new MemoryStream()) { var dataContractJsonSerializer = new DataContractJsonSerializer(obj.GetType(), settings); dataContractJsonSerializer.WriteObject(ms, obj); var jsonString = Encoding.UTF8.GetString(ms.ToArray()); if (string.IsNullOrEmpty(jsonString)) { return null; } return new JsonString(jsonString); } } } }