/// <summary> /// Return a JSON representation of this object. /// </summary> /// <param name="Embedded">Whether this data is embedded into another data structure.</param> /// <param name="IncludeCryptoHash">Include the crypto hash value of this object.</param> public JObject ToJSON(Boolean Embedded = false, InfoStatus ExpandTags = InfoStatus.ShowIdOnly, Boolean IncludeCryptoHash = false) => JSONObject.Create( new JProperty("@id", Id.ToString()), !Embedded ? new JProperty("@context", JSONLDContext.ToString()) : null, Text.IsNeitherNullNorEmpty() ? new JProperty("text", Text.ToJSON()) : null, new JProperty("publicationDate", PublicationDate.ToIso8601()), GeoLocation.HasValue ? new JProperty("geoLocation", GeoLocation.ToJSON()) : null, Tags.Any() ? new JProperty("tags", Tags.SafeSelect(tag => tag.ToJSON(ExpandTags))) : null, PrivacyLevel.ToJSON(), Signatures.Any() ? new JProperty("signatures", new JArray(Signatures.SafeSelect(signature => signature.ToJSON(Embedded: true)))) : null );
/// <summary> /// Return a JSON representation of this object. /// </summary> /// <param name="Embedded">Whether this data is embedded into another data structure.</param> /// <param name="IncludeCryptoHash">Include the crypto hash value of this object.</param> public JObject ToJSON(Boolean Embedded = false, InfoStatus ExpandTags = InfoStatus.ShowIdOnly, InfoStatus ExpandAuthorId = InfoStatus.ShowIdOnly, Boolean IncludeCryptoHash = false) => JSONObject.Create( new JProperty("@id", Id.ToString()), !Embedded ? new JProperty("@context", JSONLDContext.ToString()) : null, new JProperty("headline", Headline.ToJSON()), new JProperty("text", Text.ToJSON()), new JProperty("author", JSONObject.Create( new JProperty("@id", Author.Id.ToString()), new JProperty("name", Author.Name) )), new JProperty("publicationDate", PublicationDate.ToIso8601()), Tags.Any() ? new JProperty("tags", Tags.SafeSelect(tag => tag.ToJSON(ExpandTags))) : null, Signatures.Any() ? new JProperty("signatures", new JArray(Signatures.SafeSelect(signature => signature.ToJSON(Embedded: true)))) : null );