Exemplo n.º 1
0
        /// <summary>
        /// Removes all pathsToIgnore from the provided JToken
        /// </summary>
        /// <param name="jToken">Valid Json.NET JToken object</param>
        /// <param name="pathsToRemove">an array of valid JSON path expressions.
        /// Note: currently, the JSON Path union operator is supported for
        /// two indexes or property names</param>
        /// <returns>JToken with the ignored paths removed</returns>
        public static JToken ApplyFilter(JToken jToken, string[] pathsToRemove)
        {
            //convert the JSON to XML
            JsonToJxml  jx  = new JsonToJxml();
            XmlDocument doc = jx.ConvertToJxml(JToken.Parse(jToken.ToString()));

            //NOTE: Json.NET deserializer does not preserve data types
            //XmlDocument doc = JsonConvert.DeserializeXmlNode(jToken.ToString(), "Root");

            //get XPath equivalents for each JSON Path expression
            for (int i = 0; i < pathsToRemove.Length; i++)
            {
                pathsToRemove[i] = XPathFromJPath(pathsToRemove[i]);
            }

            //apply the filter
            doc = ApplyFilter(doc, pathsToRemove);

            //convert the XML back to JSON
            JxmlToJson xj     = new JxmlToJson();
            JToken     result = xj.ConvertToJson(doc);

            //NOTE: Json.NET serializer does not restore data types
            //JToken result = JsonConvert.SerializeXmlNode(doc.DocumentElement, Newtonsoft.Json.Formatting.Indented, true);
            return(result);
        }
Exemplo n.º 2
0
        public void JsonToJxml(string file)
        {
            var j      = new JsonToJxml();
            var json   = File.ReadAllText($"JsonTests\\FilterTests\\{file}.json");
            var jtoken = JToken.Parse(json);

            json = jtoken.ToString();
            XmlDocument doc = j.ConvertToJxml(jtoken);

            var x       = new JxmlToJson();
            var jtoken2 = x.ConvertToJson(doc);
            var json2   = jtoken2.ToString();

            Assert.Equal(json, json2);
        }
        /// <summary>
        /// Converts an XmlDocument object to a
        /// Json.NET JToken.
        /// </summary>
        /// <param name="doc">Valid XmlDocument object</param>
        /// <returns>JToken object</returns>
        public static JToken ToJson(XmlDocument doc)
        {
            var jx = new JxmlToJson();

            return(jx.ConvertToJson(doc));
        }