title: NewtonSoft json converter " unterminated String, expected delimiter : "; "
body: <p>I am trying to parse a json response that I get when calling a rest API.
  The problem I am facing is that the deserializing doesn't work every time, even though I am making the same request. I don't know how to fix it since a try.catch is not making anything better. </p>
  
  <p>Also, when I am trying to parse a very big response (20+ json objects) the program never works.</p>
  
  <p>I have googled the problem myself but I don't know the solution..</p>
  
  <blockquote>
    <p>Unterminated string. Expected delimiter: ". Path 'drinks[0].strMeasure4', line 3, position 720.</p>
  </blockquote>
  
  <p>is one of the errors I am getting, it is never the same.</p>
  
  <pre><code>using Newtonsoft.Json;
  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Net.Sockets;
  using System.Text;
  using System.Threading.Tasks;
  using ConsoleApplication1;
  
  namespace TCPclient
  {
  class Program
  {
      static void Main(string[] args)
      {
  
          TcpClient client = new TcpClient();
  
          client.Connect("www.thecocktaildb.com", 80); // geen http
          string request = getRequestCoctail("margarita");
  
  
          NetworkStream stream = client.GetStream();
  
  
          byte[] buffer = Encoding.Default.GetBytes(request);
  
          stream.Write(buffer, 0, buffer.Length);
          StringBuilder message = new StringBuilder();
          int numberOfBytesRead = 0;
          byte[] receiveBuffer = new byte[1024];
  
          do
          {
              numberOfBytesRead = stream.Read(receiveBuffer, 0, receiveBuffer.Length);
  
              message.AppendFormat("{0}", Encoding.ASCII.GetString(receiveBuffer, 0, numberOfBytesRead));
  
          } while (stream.DataAvailable);
  
  
          string response = message.ToString();
  
          //Console.WriteLine("Response: \n" + response);
          response = response.Substring(response.IndexOf("\r\n\r\n"));
          try
          {
              dynamic jsonData = JsonConvert.DeserializeObject(response);
              List&lt;Drink&gt; drankjes = new List&lt;Drink&gt;();
  
              for (int i = 0; i &lt; jsonData.drinks.Count; i++)
              {
  
                  try
                  {
                      string id = jsonData.drinks[i].idDrink;
                      string drink = jsonData.drinks[i].strDrink;
                      string category = jsonData.drinks[i].strCategory;
                      string instructions = jsonData.drinks[i].strInstructions;
                      string glass = jsonData.drinks[i].strGlass;
                      Console.WriteLine(glass);
                      var d = new Drink(id, drink, category, instructions);
  
                      drankjes.Add(d);
                  }
                  catch (Exception)
                  {
                      Console.WriteLine("error");
                  }
  
              }
          }
          catch (Exception e)
          {
              Console.WriteLine(e.Message);
          }
  
  
          //Console.WriteLine(jsonData.drinks.Count);
  
  
          //Console.WriteLine(jsonData.drinks.Count); get ammount of drinks.
          Console.ReadKey();
  
      }
      //www.thecocktaildb.com/api/json/v1/1/lookup.php?i=15679
      private static string getRequestCoctail(string coctail)
      {
  
          ///api/json/v1/1/search.php?s=margarita
          return $"GET /api/json/v1/1/search.php?s=godfather HTTP/1.1\r\n"
                   + "Host: www.thecocktaildb.com\r\n\r\n";
      }
  
      private static string GetMetaDataCocktail(dynamic jsonData)
      {
  
          dynamic drink = jsonData.drinks[0];
          return $"DrinkID : {drink.idDrink} \nDrinkName : {drink.strDrink} \nInstructions : {drink.strInstructions}";
      }
  
      private static Drink GenerateNewDrink(dynamic jsonData)
      {
          Console.WriteLine(jsonData.idDrink, jsonData.strDrink, jsonData.strCategory, jsonData.strInstructions);
          return new Drink(jsonData.idDrink, jsonData.strDrink, jsonData.strCategory, "", jsonData.strInstructions);
  
      }
  }
  }
  </code></pre>
  
  <p>edit :</p>
  
  <p>I added the drink class :</p>
  
  <pre><code>class Drink
  {
      public readonly string drinkId;
      public readonly string strDrink;
      public readonly string strCategory;
      public readonly string strInstructions;
      public readonly string strGlass;
  
      public Drink(string drinkId, string strDrink, string strCategory, string strInstructions)
      {
          this.drinkId = drinkId;
          this.strDrink = strDrink;
          this.strCategory = strCategory;
          this.strInstructions = strInstructions;
      }
  
      public Drink(string drinkId, string strDrink, string strCategory, string strGlass, string strInstructions)
      {
          this.drinkId = drinkId;
          this.strDrink = strDrink;
          this.strCategory = strCategory;
          this.strGlass = strGlass;
          this.strInstructions = strInstructions;
      }
  }
  }
  </code></pre>
  
  <p>I tried it with :</p>
  
  <p><a href="http://www.thecocktaildb.com/api/json/v1/1/search.php?s=godfather" rel="noreferrer">http://www.thecocktaildb.com/api/json/v1/1/search.php?s=godfather</a></p>
  
  <p>it went good for 5 times, then i got this error + the json i recieved.
  the 6th time was fine aswell.</p>
  
  <p><a href="http://pastebin.com/c0d29L0S" rel="noreferrer">http://pastebin.com/c0d29L0S</a> (Better format then the paste below)</p>
  
  <p>Unexpected end when deserializing object. Path 'drinks[1].strIngredient1', line 3, position 1243.</p>
  
  <pre><code>{"drinks":[
  {"idDrink":"11423",
  "strDrink":"Godfather",
  "strCategory":"Ordinary Drink",
  "strAlcoholic":"Alcoholic",
  "strGlass":"Old-fashioned glass",
  "strInstructions":"Pour ingredients into an old-fashioned glass over ice and serve. (Bourbon may be substituted for scotch, if preferred.)",
  "strDrinkThumb":null,
  "strIngredient1":"Scotch",
  "strIngredient2":"Amaretto",
  "strIngredient3":"",
  "strIngredient4":"",
  "strIngredient5":"",
  "strIngredient6":"",
  "strIngredient7":"",
  "strIngredient8":"",
  "strIngredient9":"",
  "strIngredient10":"",
  "strIngredient11":"",
  "strIngredient12":"",
  "strIngredient13":"",
  "strIngredient14":"",
  "strIngredient15":"",
  "strMeasure1":"1 1\/2 oz ",
  "strMeasure2":"3\/4 oz ",
  "strMeasure3":" ",
  "strMeasure4":" ",
  "strMeasure5":" ",
  "strMeasure6":" ",
  "strMeasure7":" ",
  "strMeasure8":"",
  "strMeasure9":"",
  "strMeasure10":"",
  "strMeasure11":"",
  "strMeasure12":"",
  "strMeasure13":"",
  "strMeasure14":"",
  "strMeasure15":"",
  "dateModified":null
  },
  {"idDrink":"11538",
  "strDrink":"J. R.'s Godfather",
  "strCategory":"Ordinary Drink",
  "strAlcoholic":"Alcoholic",
  "strGlass":"Old-fashioned glass",
  "strInstructions":"In an old-fashioned glass almost filled with ice cubes, combine both of the ingredients. Stir to mix the flavors.",
  "strDrinkThumb":null,
  "strIngredient1":
  </code></pre>
  
  <p>I understand why it goes wrong right now, the JSON is invalid ofcourse, but this is the response I recieved. So the code I am using to get the response is wrong.. right?</p>
  
  <p>edit 3:</p>
  
  <p>same request, good JSON response : </p>
  
  <p><a href="http://pastebin.com/e3WNxz0W" rel="noreferrer">http://pastebin.com/e3WNxz0W</a></p>
  
  <p>Now the program works, but it is incosistent.</p>