我无法从API调用反序列化XML响应.我的'Option'对象的属性'Description'为null.
以下是XML示例:
<vehicle found="1">
<description>VehicleDescText</description>
<buildDate>2000-11-20</buildDate>
<modelYear>2001</modelYear>
<optionList>
<option code="UH8">OptionDesc1</option>
<option code="UH8">OptionDesc2</option>
</optionList>
</vehicle>
Run Code Online (Sandbox Code Playgroud)
以下是C#类的示例:
[DataContract]
[XmlRoot("vehicle")]
public class Vehicle
{
[DataMember]
[XmlAttribute("found")]
public bool Found { get; set; }
[DataMember]
[XmlElement("description")]
public string Description { get; set; }
[DataMember]
[XmlElement("buildDate")]
public string BuildDate { get; set; }
[DataMember]
[XmlElement("modelYear")]
public string ModelYear { get; set; }
[DataMember]
[XmlElement("optionList")]
public List<Option> OptionList { get; set; }
}
public class Option
{
[DataMember]
[XmlAttribute("code")]
public string Code { get; set; } …
Run Code Online (Sandbox Code Playgroud) 如何在C#中打印任意变量以便打印所有成员?
我用相同的技术找到了三个答案:
但是,当我尝试使用以下代码时,
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
public static class Program
{
public static void Main()
{
Test t1 = new Test(1, 2);
{
string json = JsonConvert.SerializeObject(t1, Formatting.Indented);
Console.WriteLine(json);
}
Dump(t1);
// Add 3 objects to a List.
List<Test> list = new List<Test>();
list.Add(new Test(1, 2));
list.Add(new Test(3, 4));
list.Add(new Test(5, 6));
Console.WriteLine(list.ToString());
{
string json = JsonConvert.SerializeObject(list, Formatting.Indented);
Console.WriteLine(json);
}
}
public class Test
{
int A;
int b;
public Test(int …
Run Code Online (Sandbox Code Playgroud) 我正在webscraping一些数据,并尝试使用c#newtonsoft.Json将抓取的数据写入json文件.
在将数据写入控制器中的Json文件时,我遇到了困难.c#中的多维数组让我很困惑.
提前致谢.
这是我尝试创建的Json文件的示例:
[
{
"testmodule1": {
"name": {
"required": true,
"options": [
"option1",
"option2"
]
},
"admin": {
"required": true,
"options": [
"option1",
"option2"
]
},
"path": {
"required": true,
"options": [
"option1",
"option2"
]
}
}
},
{
"testmodule2": {
"name": {
"required": true,
"options": [
"option1",
"option2"
]
},
"server": {
"required": false,
"options": [
]
},
"port": {
"required": true,
"options": [
"option1",
"option2"
]
}
}
}
]
Run Code Online (Sandbox Code Playgroud)
这些是我的课程:
public class JsonData …
Run Code Online (Sandbox Code Playgroud) 我的示例代码非常简单:
using System.Text.Json.Serialization;
using Newtonsoft.Json;
public class C {
public C(string PracticeName) { this.PracticeName = PracticeName; }
public string PracticeName;
}
var x = new C("1");
var json = JsonConvert.SerializeObject(x); // returns "{\"PracticeName\":\"1\"}"
var x1 = JsonConvert.DeserializeObject<C>(json); // correctly builds a C
var x2 = System.Text.Json.Serialization.JsonSerializer.Parse<C>(json);
Run Code Online (Sandbox Code Playgroud)
最后一行引发:
引发异常:System.Text.Json.dll中的“ System.NullReferenceException”对象引用未设置为对象的实例。
我究竟做错了什么 ?
(Note this is on latest .NET Core 3 preview 5 with latest System.Text.Json 4.6.0-preview6.19259.10)
Adding a parameterless constructor prevents the exception however I don't want/need a parameterless constructor and …
我正在将应用程序从 .NET Core 2.2 升级到 .NET Core 3.0,并且新的System.Text.Json
序列化程序的行为与 Newtonsoft 在 2.2 中的行为不同。在像不间断空格 (\u00A0) 或表情符号字符这样的字符上,Newtonsoft(甚至 Utf8Json)将它们序列化为它们的实际字符,而不是 Unicode 代码。
我创建了一个简单的 .NET Fiddle 来展示这一点。
var input = new Foo { Bar = "\u00A0 Test !@#$%^&*() \uD83D\uDCAF ??" };
var newtonsoft = Newtonsoft.Json.JsonConvert.SerializeObject(input);
var system = System.Text.Json.JsonSerializer.Serialize(input, new System.Text.Json.JsonSerializerOptions
{
Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
});
var utf8Json = Utf8Json.JsonSerializer.ToJsonString(input);
Console.WriteLine($"Original: {input.Bar} - {input.Bar.Contains('\u00A0')}"); // Original
Console.WriteLine($"Newtonsoft: {newtonsoft} - {newtonsoft.Contains('\u00A0')}"); // Works
Console.WriteLine($"System.Text.Json: {system} - {system.Contains('\u00A0')}"); // Does not work
Console.WriteLine($"Utf8Json: {utf8Json} - {utf8Json.Contains('\u00A0')}"); …
Run Code Online (Sandbox Code Playgroud) 如果我有一个 JSON 数组,并且想从每个对象中提取一个字段,那么这相当简单:
Data:
{
"Values": [
{
"Name": "Bill",
"Age": "25",
"Address": "1234 Easy St."
},
{
"Name": "Bob",
"Age": "28",
"Address": "1600 Pennsylvania Ave."
},
{
"Name": "Joe",
"Age": "31",
"Address": "653 28th St NW"
}
]
}
Query:
data.SelectTokens("Values[*].Name")
Run Code Online (Sandbox Code Playgroud)
这将为我提供所有名称的数组。但如果我想要多个字段怎么办?有没有办法获取包含名称和地址的对象数组?
最明显的方法是运行SelectTokens
两次然后再Zip
运行,但这行得通吗?两个结果数组是否保证保留原始源数据的顺序?有没有一种更简单的方法可以只用一个查询来完成它?
正如代码所言,我无法在 Go 中使用冒号解组 xml 元素。
https://play.golang.org/p/zMm5IQSfS01
package main
import (
"fmt"
"encoding/xml"
)
type Obj struct {
XMLName xml.Name `xml:"book"`
AbcName string `xml:"abc:name"`
}
func main() {
a := []byte(`<book><abc:name>text</abc:name></book>`)
obj := &Obj{}
if err := xml.Unmarshal(a, obj); err != nil {
panic(err)
}
fmt.Printf("%#v\n", obj)
}
Run Code Online (Sandbox Code Playgroud)
代码输出:
&main.Obj{XMLName:xml.Name{Space:"", Local:"book"}, AbcName:""}
Run Code Online (Sandbox Code Playgroud)
是否可以在 Golang 中使用冒号解组 xml 元素?如果是,怎么办?
我正在努力显示长文本,这是字符串格式的地址。它可能需要一行或两行或多行,我已经尝试了所有解决方案来完全显示文本,但每次它都会溢出。我已经使用了灵活的、可扩展的和所有文本属性,如软包装,但它不起作用。我必须在 ListTile 中显示此列。
\nshowPickedDropoffLocations() {\n return Column(\n crossAxisAlignment: CrossAxisAlignment\n .start, //meant to align elements to the left - seems to be working\n mainAxisAlignment: MainAxisAlignment.spaceBetween,\n children: [\n SizedBox(height: 5),\n Row(\n mainAxisAlignment: MainAxisAlignment.spaceAround,\n children: const <Widget>[\n Icon(\n Icons.pin_drop,\n color: Colors.pink,\n size: 24.0,\n \n ),\n Text("Pickup Location"),\n ]),\n\n Container(\n height: 50,\n \n child: Text(pickedAddress, style: TextStyle(), softWrap: true)),\n \n\n Center(\n child: Column(\n children: [\n Text(\'.\'),\n Text(\'.\'),\n Text(\'.\'),\n \n ],\n ),\n ),\n SizedBox(height: 5),\n Row(\n mainAxisAlignment: MainAxisAlignment.spaceAround,\n children: const <Widget>[\n Icon(\n Icons.pin_drop,\n color: …
Run Code Online (Sandbox Code Playgroud) 我正在尝试读取逗号分隔的 csv 文件,除非字段包含逗号,否则该文件在大多数情况下都不是文本限定的。一个例子是可以包含逗号的地址行。当发生这种情况时,列将在我的映射对象内分流。
AddressLine1, Email, ID
House Name, test@test.net, 5
"House Name, 20", test@test.net,5
Run Code Online (Sandbox Code Playgroud)
忽略不好的结果,这会导致对象
[0] AddressLine1: House Name, Email: test@test.net, ID: 5
[1] AddressLine1: House Name, Email: 20, ID: test@test.net
Run Code Online (Sandbox Code Playgroud)
我尝试了各种配置,包括修改模式和转义字符。
var config = new CsvConfiguration(CultureInfo.InvariantCulture)
{
HasHeaderRecord = true,
Delimiter = ",",
HeaderValidated = null,
Mode = CsvMode.Escape,
Escape = '\\'
};
Run Code Online (Sandbox Code Playgroud)
有人可以帮我指出正确的方向吗?
我使用这段代码,但出现错误:
错误:System.ArgumentException:“...GreenPaperItem”类型的表达式不能用于方法“Boolean”的“System.Runtime.CompilerServices.Closure”类型的参数
public static Expression<Func<T, bool>> ToExpression<T>(Func<T, bool> p)
{
ParameterExpression p0 = Expression.Parameter(typeof(T));
ParameterExpression p1 = Expression.Parameter(typeof(bool));
return Expression.Lambda<Func<T, bool>>(Expression.Call(p.Method, p0, p1),
new ParameterExpression[] { p0, p1 });
}
Run Code Online (Sandbox Code Playgroud)
该表达式旨在用于 linq toEntity IQueriyable 查询:
query = query.Where(ToExpression<GreenPaperItem>(filter.GenerateFilterFunction()));
Run Code Online (Sandbox Code Playgroud)