我需要使用RestSharp从github获取一个json文件。我在用C#编码。
我试过这样做:
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
using System.Net.Http;
using System.Web;
using System.Net;
using Newtonsoft.Json;
using RestSharp;
using RestSharp.Authenticators;
using RestSharp.Extensions;
namespace OurOSBasic.O_OS_Kernel.ACK
{
internal class Commands
{
public string Command { get; set; }
public short Response { get; set; }
public override string ToString()
{
return $"{Command,20}: {Response} contributions";
}
}
class CommandParser
{
private static System.Text.Json.JsonElement root;
private static System.Text.Json.JsonElement.ArrayEnumerator elems;
public static async void CommandParserFunc()
{
var client = new RestClient("https://github.com");
var request = new RestRequest("OurWorldMetaverse/OurOSBasic/blob/main/O_OS-Kernel/ACK/Resources/ACKCommands.json", Method.Get);
// Add HTTP headers
request.AddHeader("User-Agent", "Nothing");
// Execute the request and automatically deserialize the result.
var contributors = client.ExecuteAsync<List<Commands>>(request);
Console.Write(contributors.Result.Data);
}
}
}我正在尝试制作一个模拟OS的桌面应用程序。这段代码是我试图为它的控制台制作一个CommandParser。
都没有用。任何帮助都很重要。
发布于 2022-02-21 12:30:17
很难理解您想要做什么,但是您的代码有很多问题。
{
"exclude": [
"**/bin",
"**/bower_components",
"**/jspm_packages",
"**/node_modules",
"**/obj",
"**/platforms"
],
"Commands": {
"ping": "pong",
"isaiah": "Isaiah is the Head of 3D Modeling at OurWorld",
"clear": "Clearning Console...",
"duggo": "Duggoooo!",
"aidyn": "Have a kermit",
"magnet": "AA A MAGNET NOOO!",
"upshot": "ITS RAINING DOLLA BILLS",
"FakeMathew": "Need to be incognito?"
}
}它与您的Commands类没有什么关系,因为首先,Commands集合是一个映射,其次,它是一个属性,而不是根元素,第三,它根本没有short值,所有的值都是字符串。
async void不是任何人都应该做的事情。.Result而不是等待呼叫下面是可以工作的代码,但我认为您可以从首先学习一些C#基础知识中获益。
using RestSharp;
var client = new RestClient("https://raw.githubusercontent.com/");
var response = await client.GetJsonAsync<Response>("OurWorldMetaverse/OurOSBasic/main/O_OS-Kernel/ACK/Resources/ACKCommands.json");
Console.WriteLine(response!.Commands["ping"]);
class Commands : Dictionary<string, string>{}
class Response {
public Commands? Commands { get; set; }
}https://stackoverflow.com/questions/71182261
复制相似问题