WriteNull() 공개 메소드

Writes a null value.
public WriteNull ( ) : void
리턴 void
    public void ValueFormatting()
    {
      StringBuilder sb = new StringBuilder();
      StringWriter sw = new StringWriter(sb);

      using (JsonWriter jsonWriter = new JsonTextWriter(sw))
      {
        jsonWriter.WriteStartArray();
        jsonWriter.WriteValue('@');
        jsonWriter.WriteValue("\r\n\t\f\b?{\\r\\n\"\'");
        jsonWriter.WriteValue(true);
        jsonWriter.WriteValue(10);
        jsonWriter.WriteValue(10.99);
        jsonWriter.WriteValue(0.99);
        jsonWriter.WriteValue(0.000000000000000001d);
        jsonWriter.WriteValue(0.000000000000000001m);
        jsonWriter.WriteValue((string)null);
        jsonWriter.WriteValue((object)null);
        jsonWriter.WriteValue("This is a string.");
        jsonWriter.WriteNull();
        jsonWriter.WriteUndefined();
        jsonWriter.WriteEndArray();
      }

      string expected = @"[""@"",""\r\n\t\f\b?{\\r\\n\""'"",true,10,10.99,0.99,1E-18,0.000000000000000001,null,null,""This is a string."",null,undefined]";
      string result = sb.ToString();

      Console.WriteLine("ValueFormatting");
      Console.WriteLine(result);

      Assert.AreEqual(expected, result);
    }
예제 #2
0
        public static void SerializeMessage(JsonTextWriter writer, ServiceType type, object message)
        {
            Require.NotNull(writer, "writer");
            Require.NotNull(type, "type");
            Require.NotNull(message, "message");

            writer.WriteStartObject();

            foreach (var field in type.Fields.Values)
            {
                writer.WritePropertyName(field.Tag.ToString(CultureInfo.InvariantCulture));

                object value = field.Getter(message);

                if (value == null)
                {
                    writer.WriteNull();
                }
                else if (field.CollectionType != null)
                {
                    writer.WriteStartArray();

                    foreach (object item in (IEnumerable)value)
                    {
                        if (field.ServiceType != null)
                            SerializeMessage(writer, field.ServiceType, item);
                        else
                            writer.WriteValue(item);
                    }

                    writer.WriteEndArray();
                }
                else
                {
                    if (field.ServiceType != null)
                        SerializeMessage(writer, field.ServiceType, value);
                    else
                        writer.WriteValue(value);
                }
            }

            writer.WriteEndObject();
        }
    public void WriteReadWrite()
    {
      StringBuilder sb = new StringBuilder();
      StringWriter sw = new StringWriter(sb);

      using (JsonWriter jsonWriter = new JsonTextWriter(sw)
        {
          Formatting = Formatting.Indented
        })
      {
        jsonWriter.WriteStartArray();
        jsonWriter.WriteValue(true);

        jsonWriter.WriteStartObject();
        jsonWriter.WritePropertyName("integer");
        jsonWriter.WriteValue(99);
        jsonWriter.WritePropertyName("string");
        jsonWriter.WriteValue("how now brown cow?");
        jsonWriter.WritePropertyName("array");

        jsonWriter.WriteStartArray();
        for (int i = 0; i < 5; i++)
        {
          jsonWriter.WriteValue(i);
        }

        jsonWriter.WriteStartObject();
        jsonWriter.WritePropertyName("decimal");
        jsonWriter.WriteValue(990.00990099m);
        jsonWriter.WriteEndObject();

        jsonWriter.WriteValue(5);
        jsonWriter.WriteEndArray();

        jsonWriter.WriteEndObject();

        jsonWriter.WriteValue("This is a string.");
        jsonWriter.WriteNull();
        jsonWriter.WriteNull();
        jsonWriter.WriteEndArray();
      }

      string json = sb.ToString();

      JsonSerializer serializer = new JsonSerializer();

      object jsonObject = serializer.Deserialize(new JsonTextReader(new StringReader(json)));

      sb = new StringBuilder();
      sw = new StringWriter(sb);

      using (JsonWriter jsonWriter = new JsonTextWriter(sw)
        {
          Formatting = Formatting.Indented
        })
      {
        serializer.Serialize(jsonWriter, jsonObject);
      }

      Assert.AreEqual(json, sb.ToString());
    }
    public void Path()
    {
      StringBuilder sb = new StringBuilder();
      StringWriter sw = new StringWriter(sb);

      string text = "Hello world.";
      byte[] data = Encoding.UTF8.GetBytes(text);

      using (JsonTextWriter writer = new JsonTextWriter(sw))
      {
        writer.Formatting = Formatting.Indented;

        writer.WriteStartArray();
        Assert.AreEqual("", writer.Path);
        writer.WriteStartObject();
        Assert.AreEqual("[0]", writer.Path);
        writer.WritePropertyName("Property1");
        Assert.AreEqual("[0].Property1", writer.Path);
        writer.WriteStartArray();
        Assert.AreEqual("[0].Property1", writer.Path);
        writer.WriteValue(1);
        Assert.AreEqual("[0].Property1[0]", writer.Path);
        writer.WriteStartArray();
        Assert.AreEqual("[0].Property1[1]", writer.Path);
        writer.WriteStartArray();
        Assert.AreEqual("[0].Property1[1][0]", writer.Path);
        writer.WriteStartArray();
        Assert.AreEqual("[0].Property1[1][0][0]", writer.Path);
        writer.WriteEndObject();
        Assert.AreEqual("[0]", writer.Path);
        writer.WriteStartObject();
        Assert.AreEqual("[1]", writer.Path);
        writer.WritePropertyName("Property2");
        Assert.AreEqual("[1].Property2", writer.Path);
        writer.WriteStartConstructor("Constructor1");
        Assert.AreEqual("[1].Property2", writer.Path);
        writer.WriteNull();
        Assert.AreEqual("[1].Property2[0]", writer.Path);
        writer.WriteStartArray();
        Assert.AreEqual("[1].Property2[1]", writer.Path);
        writer.WriteValue(1);
        Assert.AreEqual("[1].Property2[1][0]", writer.Path);
        writer.WriteEnd();
        Assert.AreEqual("[1].Property2[1]", writer.Path);
        writer.WriteEndObject();
        Assert.AreEqual("[1]", writer.Path);
        writer.WriteEndArray();
        Assert.AreEqual("", writer.Path);
      }

      Assert.AreEqual(@"[
  {
    ""Property1"": [
      1,
      [
        [
          []
        ]
      ]
    ]
  },
  {
    ""Property2"": new Constructor1(
      null,
      [
        1
      ]
    )
  }
]", sb.ToString());
    }
예제 #5
0
        public string XmlToJson(string Xml)
        {
            StringWriter JW = new StringWriter();
            JsonTextWriter JTW = new JsonTextWriter(JW);
            JTW.Formatting = Newtonsoft.Json.Formatting.Indented;
            StringReader XSR = new StringReader(Xml.Trim());
            XmlReader XR = XmlReader.Create(XSR);

            string ValType = "";
            bool InArray = false;

            XR.Read();
            if (!(XR.NodeType == XmlNodeType.Element && XR.Name == "xml"))
            {
                throw new  Exception("Invalid XML Input");
            }
            bool Read = true;
            bool NextRead = false;

            try
            {
                if (XR.GetAttribute("in_array") == "1") InArray = true;
            }
            catch{}

            while (Read)
            {
                if (! NextRead)
                {
                    Read = XR.Read();
                }
                NextRead = false;
                switch(XR.NodeType)
                {
                    case (XmlNodeType.Element):
                        switch(XR.Name)
                        {
                            case("obj"):
                                JTW.WriteStartObject();
                                break;
                            case ("arr"):
                                JTW.WriteStartArray();
                                break;
                            case("cons" ):
                                JTW.WriteStartConstructor("");
                                break;
                            case ("num"):
                            case ("str"):
                            case ("bool"):
                            case ("undef" ):
                                ValType = XR.Name;
                                Read = XR.Read();
                                NextRead = true;
                                if (XR.NodeType == XmlNodeType.EndElement)
                                {
                                    JTW.WriteValue("");
                                }
                                break;
                            case("prop"):
                                JTW.WritePropertyName(XR.GetAttribute("oname"));
                                break;
                        }
                        break;
                    case (XmlNodeType.EndElement ):
                        switch(XR.Name)
                        {
                            case("obj"):
                                JTW.WriteEndObject();
                                break;
                            case("arr"):
                                JTW.WriteEndArray();
                                break;
                            case("cons" ):
                                JTW.WriteEndConstructor();
                                break;
                        }
                        break;
                    case(XmlNodeType.Text):
                        switch(ValType)
                        {
                            case("num"):
                                try
                                {
                                    JTW.WriteValue(Int32.Parse(XR.Value.Trim()));
                                }
                                catch
                                {
                                    try
                                    {
                                        JTW.WriteValue(float.Parse(XR.Value.Trim()));
                                    }
                                    catch
                                    {
                                        JTW.WriteValue(XR.Value);
                                    }
                                }
                                break;
                            case("str"):
                                JTW.WriteValue(XR.Value.ToString());
                                break;
                            case("bool"):
                                if (XR.Value.ToString().Equals("1"))
                                {
                                    JTW.WriteValue(true);
                                }
                                else if(XR.Value.ToString().Equals("0"))
                                {
                                    JTW.WriteValue(false);
                                }
                                else
                                {
                                    JTW.WriteValue(XR.Value);
                                }
                                break;
                            case("undef"):
                                if (XR.Value.ToString() == "null")
                                {
                                    JTW.WriteNull();
                                }
                                else
                                {
                                    JTW.WriteValue(XR.Value.ToString());
                                }
                                break;
                        }
                        break;
                }
            }
            JTW.Close();
            if (InArray)
            {
                return string.Format("[{0}]",JW.ToString().Trim());
            }
            else
            {
                return JW.ToString().Trim();
            }
        }
예제 #6
0
        private void CreatePlaylist_BuildJson(string title, string description, IEnumerable<Song> songs, Stream stream)
        {
            using (var streamWriter = new StreamWriter(stream))
            using (var jsonWriter = new JsonTextWriter(streamWriter))
            {
                jsonWriter.WriteStartArray(); // [

                // ["sessionId",1]
                jsonWriter.WriteStartArray();
                jsonWriter.WriteValue(this.SessionId);
                jsonWriter.WriteValue(1);
                jsonWriter.WriteEndArray();

                // [null, "Name", "Description",
                jsonWriter.WriteStartArray();
                jsonWriter.WriteNull();
                jsonWriter.WriteValue(title);
                jsonWriter.WriteValue(description);

                // [["Song-Guid", (int)songType], [...]]
                jsonWriter.WriteStartArray();
                if (songs != null)
                {
                    foreach (Song song in songs)
                    {
                        jsonWriter.WriteStartArray();
                        jsonWriter.WriteValue(song.ID);
                        jsonWriter.WriteValue(song.Type);
                        jsonWriter.WriteEndArray();
                    }
                }
                jsonWriter.WriteEndArray();

                jsonWriter.WriteEndArray(); //]
                jsonWriter.WriteEndArray(); //]
            }
        }
예제 #7
0
파일: Program.cs 프로젝트: sergeyt/cil.js
		private static void DumpOpCodes()
		{
			using (var output = new StreamWriter(@"C:\tsv\pets\vmjs\src\runtime\opcodes.js"))
			using (var writer = new JsonTextWriter(output)
				{
					Formatting = Formatting.Indented
				})
			{
				var fields = typeof(OpCodes).GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.GetField);
				var opCodes = (from fi in fields
				               select new {fi.Name, OpCode = (OpCode) fi.GetValue(null)})
					.OrderBy(x => (uint) x.OpCode.Value)
					.ToArray();

				Action<string, object> prop = (name, value) =>
					{
						writer.WritePropertyName(name);
						writer.WriteValue(value);
					};

				Action<string, string> propEnum = (name, value) =>
					{
						writer.WritePropertyName(name);
						writer.WriteRawValue(value);
					};

				Action<OpCode> dump = opCode =>
					{
						writer.WriteStartObject();
						prop("name", opCode.Name);
						prop("size", opCode.Size);
						prop("value", opCode.Value);
						propEnum("operand", "OperandType." + opCode.OperandType);
						propEnum("flow", "FlowControl." + opCode.FlowControl);
						propEnum("type", "OpCodeType." + opCode.OpCodeType);
						propEnum("pop", "StackBehaviour." + opCode.StackBehaviourPop);
						propEnum("push", "StackBehaviour." + opCode.StackBehaviourPush);
						writer.WriteEndObject();
					};

				var shortOpCodes = opCodes.Where(x => x.OpCode.Size == 1).ToDictionary(x => (int) x.OpCode.Value, x => x.Name);
				var longOpCodes = opCodes.Where(x => x.OpCode.Size > 1).ToDictionary(x => x.OpCode.Value & 0xff, x => x.Name);

				writer.WriteRaw("// warning: this file was auto generated!\n");
				writer.WriteRaw("var OpCodes = ");
				writer.WriteStartObject();
				foreach (var f in opCodes)
				{
					writer.WritePropertyName(f.Name);
					dump(f.OpCode);
				}
				writer.WriteEndObject();
				writer.WriteRaw(";\n");

				writer.WriteRaw("var ShortOpCodes = ");
				writer.WriteStartArray();
				for (var i = 0; i <= 255; i++)
				{
					string name;
					if (shortOpCodes.TryGetValue(i, out name))
					{
						writer.WriteRawValue("OpCodes." + name);
					}
					else
					{
						writer.WriteNull();
					}
				}
				writer.WriteEndArray();
				writer.WriteRaw(";\n");

				var maxLongOpCode = longOpCodes.Keys.Max();
				writer.WriteRawValue("var LongOpCodes = ");
				writer.WriteStartArray();
				for (var i = 0; i <= maxLongOpCode; i++)
				{
					string name;
					if (longOpCodes.TryGetValue(i, out name))
					{
						writer.WriteRawValue("OpCodes." + name);
					}
					else
					{
						writer.WriteNull();
					}
				}
				writer.WriteEndArray();
				writer.WriteRaw(";\n");
			}
		}