这是我的提示:
-
从远程 URL 检索 JSON 文件。您的解决方案应从设置文件(app.config、web.config 等(中提取此内容。(我有网址(
-
确定提供的字符串是否为回文。在评估字符串是否为回文时,将考虑字母数字字符。
- 解析检索到的 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 的方法:反序列化对象
以下是编写函数来检查字符串是否为回文的方法:检查字符串是否为回文
你走在正确的轨道上。下面我更新了您的代码以获取所需的内容:
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;
}