我正在学习C#,我做了一个控制台应用程序,它读取文本条目并搜索以JSON语言表示的返回值的应用程序接口,然后通过控制台显示这些值。现在我需要将它传递到一个图形环境,我所做的是创建一个类"MyClass“,并且在这个类中我已经创建了一个方法"MyMethod”,它将接收一个15位数字作为参数,并将查询应用程序接口(如控制台应用程序),然后返回这些值。
我不知道的是如何正确地创建方法,以及如何从另一个类实例化它,因为它会生成错误。
我的JSON:
{
"success": true,
"result": {
"id": "20429683581",
"name": "CINEPLEX S.A",
"Condition": "HABIDO",
"PLE": "02\/01\/2013",
"lawyers": [
{
"type": "DNI",
"numdoc": "07871885",
"name": "PONCE PINTO ALEJANDRO EDUARDO",
"date": "22\/08\/2000"
},
{
"type": "DNI",
"numdoc": "09333203",
"name": "SORIANO BARRANTES JOSE FERNANDO",
"date": "22\/09\/2008"
}
],
"workers": [
{
"time": "2017-07",
"service": "8"
},
{
"time": "2018-06",
"service": "13"
}
]
}
}
我定义了以下类:
public class Lawyer
{
public string type { get; set; }
public string numdoc { get; set; }
public string name { get; set; }
public string date { get; set; }
}
public class Worker
{
public string time { get; set; }
public string service { get; set; }
}
public class Result
{
public string id { get; set; }
public string name { get; set; }
public string Condition { get; set; }
public string PLE { get; set; }
public List<Lawyer> lawyers { get; set; }
public List<Worker> workers { get; set; }
}
public class RootObject
{
public bool success { get; set; }
public Result result { get; set; }
}
在控制台应用程序中,它们工作得很好:
RootObject rootobject;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(@"https://www.example.com/api/?get=" + inid);
HttpWebResponse response;
try
{
response = (HttpWebResponse)request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
{
var json = reader.ReadToEnd();
rootobject = JsonConvert.DeserializeObject<RootObject>(json);
}
if (rootobject.success == true)
{
Console.WriteLine("---------------");
Console.WriteLine("ID: " + rootobject.result.id);
Console.WriteLine("NAME: " + rootobject.result.name);
Console.WriteLine("CONDITION: " + rootobject.result.Condition);
Console.WriteLine("PLE: " + rootobject.result.PLE);
}
else
{
Console.WriteLine("---------------");
Console.WriteLine("NOTHING");
}
}
catch (Exception)
{
Console.WriteLine("---------------");
Console.WriteLine("ERROR");
}
此后,我使用MyClass
迁移到了一个基于图形用户界面的应用程序
class MyClass
{
public void MyMethod(int inRUC){
RootObject rootobject;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(@"https://www.example.com/api/?get=" + inRUC);
HttpWebResponse response;
response = (HttpWebResponse)request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
{
var json = reader.ReadToEnd();
rootobject = JsonConvert.DeserializeObject<RootObject>(json);
}
}
}
现在我想要获取图形表单中的文本条目的值,并实例化该类以获得结果并将它们打印到相同表单的文本字段中,但我不知道如何正确实例化它以及如何正确放置这些值,这就是我目前正在尝试的:(txtRuc1)是我表单的输入,EditText1是我表单的输出:
private void Button1_ClickBefore(object sboObject, SAPbouiCOM.SBOItemEventArg pVal, out bool BubbleEvent)
{
if (string.IsNullOrEmpty(txtRuc1.Value.ToString()))
{
BubbleEvent = false;
}
else
{
//Ok, I known that it is wrong
BubbleEvent = true;
MyClass obj = new Sunat();
EditText1.Value = obj.MyMethod(txtRuc1.value).rootobject.result.name;
}
}
正确的形式是什么?Visual studio返回错误:无法将以下行中的"string“转换为"int”:
obj.MyMethod(txtRuc1.value).rootobject.result.name
发布于 2018-09-03 05:37:37
首先,您的MyMethod
需要返回RootObject
而不是void
public RootObject MyMethod(int inRUC){
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(@"https://www.example.com/api/?get=" + inRUC);
HttpWebResponse response;
response = (HttpWebResponse)request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
{
var json = reader.ReadToEnd();
return JsonConvert.DeserializeObject<RootObject>(json);
}
}
那么这个错误是由txtRuc1.value
可能的字符串值引起的,但是MyMethod
方法需要int
。
因此,您可以尝试使用int.TryParse
方法解析输入值,以便对其进行int
传递。
int para = 0;
int.TryParse(txtRuc1.value,out para);
EditText1.Value = obj.MyMethod(para).rootobject.result.name;
https://stackoverflow.com/questions/52141169
复制相似问题