C# JSON 来自 url 和回文

C# JSON from url and palindromes

这是我的提示:

  1. 从远程 URL 检索 JSON 文件。您的解决方案应该从设置文件(app.config、web.config 等)中提取它。 (我有url)

  2. 判断提供的字符串是否为回文。评估字符串是否为回文时将考虑字母数字字符。

  3. 解析检索到的 JSON 文件,并将 "strings" 数组中的每个元素传递给步骤 #2 中的函数。您应该打印出字符串和结果。

我是 C# 的新手,我无法弄清楚如何从 url 读取 json 文件,然后将其用于函数。我几乎不知道如何开始这个。有什么建议吗?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
namespace ConsoleApplication1
{
class Program
{

    public static bool IsPalindrome(string value)
    {
        int min = 0;
        int max = value.Length - 1;
    //    while (true)
       {
            if (min > max)
            {
                return true;
           }
           char a = value[min];
            char b = value[max];
            if (char.ToLower(a) != char.ToLower(b))
            {
                return false;
            }
            min++;
            max--;
        }
    }

    static void Main() {
        using (WebClient webClient = new System.Net.WebClient())
        {
            WebClient n = new WebClient();
            var json = n.DownloadString("URL");
            string valueOriginal = Convert.ToString(json);
            //Console.WriteLine(json);
        }

        string[] array = {

          };

        foreach (string value in array)
        {
            Console.WriteLine("{0} = {1}", value, IsPalindrome(value));
        }
    }
}
}

样本JSON:

{
  "strings": [
    {
      "str": "mom",
      "result": "true"
    },
    {
      "str": "Taco Cat",
      "result": "true"
    },
    {
      "str": "university",
      "result": "false"
    },
    {
      "str": "Amore, Roma.",
      "result": "true"
    },
    {
      "str": "King are you glad you are king",
      "result": "false"
    }
  ]
}

以下是如何从 URL 中获取 json 字符串:如何从 url 中获取 json 字符串?

以下是反序列化 json 的方法:Deserialize an Object

下面是编写函数来检查字符串是否为回文的方法:Check if a string is a palindrome

你走在正确的轨道上。下面我更新了您的代码以获得您需要的内容:

    class Program
{
    private static void Main(string[] args)
    { 
        // Get JSON from URL
        var json = GetJasonFromUrl(Properties.Settings.Default.url);

        // De-serialize JSON into a list
        var deserlizedJson = DeserializeMyJson(json);

        // Go through each item in the list and determine if palindrome or not
        foreach (var item in deserlizedJson)
        {
            if (IsPalindrome(item.Str))
                Console.WriteLine(item.Str + " is palindrome");
            else
                Console.WriteLine(item.Str + " is not palindrome");
        }
    }

    private static string GetJasonFromUrl(string url)
    {
        string result;

        try
        {
            using (var webClient = new WebClient())
            {
                result = webClient.DownloadString(url);
            }
        }
        catch (Exception)
        {
            result = string.Empty;
        }

        return result;
    }

    private static IEnumerable<Palindromes> DeserializeMyJson(string json)
    {
        return JsonConvert.DeserializeObject<IEnumerable<Palindromes>>(json);
    }

    // Assuming your function is tested and correct
    private static bool IsPalindrome(string value)
    {
        var min = 0;
        var max = value.Length - 1;

        while (true)
        {
            if (min > max)
                return true;
            var a = value[min];
            var b = value[max];

            if (char.ToLower(a) != char.ToLower(b))
                return false;

            min++;
            max--;
        }
    }
}

internal class Palindromes
{
    public string Str { get; set; } = string.Empty;
    public bool Result { get; set; } = false;
}