我正在嘗試從 Json 格式的輸出中洗掉此標頭“vendor”: 和 { } 分支。
洗掉的原因是將這三個欄位名稱(“RECORDNO”..“NAME”)映射到SQL表。

底部是預期的輸出:

底部是 C# 代碼,它遍歷每個代碼并填充結果,然后使用 JsonCovert 將輸出格式化為 Json 格式。
public static string Run(ILogger logger)
{
OnlineClient client = Bootstrap.Client(logger);
ReadByQuery query = new ReadByQuery()
{
ObjectName = "VENDOR",
PageSize = 600,
Fields =
{
"RECORDNO",
"VENDORID",
"NAME"
}
};
logger.LogInformation("Executing query to Intacct API");
Task<OnlineResponse> task = client.Execute(query);
task.Wait();
OnlineResponse response = task.Result;
Result result = response.Results[0];
LogManager.Flush();
int i = 1;
while (result.NumRemaining > 0 && i <= 1 && !string.IsNullOrEmpty(result.ResultId))
{
i ;
ReadMore more = new ReadMore()
{
ResultId = result.ResultId
};
Task<OnlineResponse> taskMore = client.Execute(more);
taskMore.Wait();
OnlineResponse responseMore = taskMore.Result;
Result resultMore = responseMore.Results[0];
dynamic resultJson =
JsonConvert.DeserializeObject(JsonConvert.SerializeObject(result.Data));
string resultJsonString = resultJson.ToString();
return resultJsonString;
}
return "";
}
我不精通 C#,所以我不知道如何表達從“查詢”中洗掉“供應商:”部分。
我確信這個 C# 代碼中有很多不需要的行可以洗掉(清理)。
洗掉“vendor”的運算式是什么:和{}分支?
謝謝你。
uj5u.com熱心網友回復:
您可以創建一個新的 JObject,將“供應商”欄位中可用的 JObject 值分配給它。
你可以這樣做:
JObject changed = jobj["vendor"].Value<JObject>();
下面是一個例子:
JObject toChange = new JObject();
toChange["vendor"] = new JObject();
toChange["vendor"]["fieldA"] = "value";
toChange["vendor"]["fieldB"] = "value";
JObject changed = toChange["vendor"].Value<JObject>();
Console.WriteLine(toChange.ToString());
Console.WriteLine(changed.ToString());
由此:
{
"vendor": {
"fieldA": "value",
"fieldB": "value"
}
}
你會得到這個:
{
"fieldA": "value",
"fieldB": "value"
}
uj5u.com熱心網友回復:
使用 Newtonsoft.Json 試試這個
using Newtonsoft.Json;
....
var jsonArray=JArray.Parse(json);
var newJsonArray = jsonArray.SelectTokens("$..VENDOR");
var result= JsonConvert.SerializeObject(newJsonArray, Newtonsoft.Json.Formatting.Indented);
結果
[ {
"RECORDNO": "1",
"VENDORID": "ID1",
"NAME": "Name1"
},
{
"RECORDNO": "2",
"VENDORID": "ID2",
"NAME": "Name2"
},
{
"RECORDNO": "3",
"VENDORID": "ID3",
"NAME": "Name3"
} ]
或者您可以創建類并輸入 c# 串列
var jsonDeserialized=JsonConvert.DeserializeObject<VendorRoot[]>(json);
List<VENDOR> newJsonList = jsonDeserialized.Select(d => d.VENDOR ).ToList();
var result= JsonConvert.SerializeObject(newJsonList, Newtonsoft.Json.Formatting.Indented);
班級
public class VendorRoot
{
public VENDOR VENDOR { get; set; }
}
public class VENDOR
{
public string RECORDNO { get; set; }
public string VENDORID { get; set; }
public string NAME { get; set; }
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/361681.html
