ベア確認し、これへの私の研究は、以下が得られた:
あなたはX, Y, Z
値を引き出すために、独自のカスタムJsonConverter
が必要になりますがあなたのベクトルのとfloat配列のいくつかの種類にそれらを回す:
public class VectorSerializer : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var token = JToken.FromObject(value);
var x = token["X"].Value<float>();
var y = token["Y"].Value<float>();
var z = token["Z"].Value<float>();
var vector = new[] { x, y, z };
var o = JArray.FromObject(vector);
o.WriteTo(writer);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var item = JObject.Load(reader);
var vector = item["myVector3"].ToObject<float[]>();
return new myVector3 { X = vector[0], Y = vector[1], Z = vector[2] };
}
public override bool CanConvert(Type objectType)
{
return typeof(myVector3).IsAssignableFrom(objectType);
}
}
public class myVector3
{
public float X, Y, Z;
}
そして、あなたはこのようにそれを使用することができます:
var vectorFromString = JsonConvert.DeserializeObject<myVector3>("{\"myVector3\": [1.0, 1.5, 2.5]}", new VectorSerializer());
//You'll get your vector object from this string^
var vectorToString = JsonConvert.SerializeObject(vectorFromString, new VectorSerializer());
//Output: "[1.0, 1.5, 2.5]"
@GeoffJ ames:それは単に真実ではありません - 要求JSONは完全に有効です。 https://tools.ietf.org/html/rfc7159#section-5 –
を参照してください。@GeoffJames '{" myVector3 ":[0.0、0.0、0.0]}'は完全に有効なJSONです。そういうクラスにデシリアライズします慣習的ではありませんが、最終的にはアプリケーションの選択です。個人的にJSON構造体とそのクラスがあれば、 'public decimal [] myVector3'プロパティを持つ中間クラスを使用します。 –
Noted、ありがとう皆さん - 私は質問を読んだときにnumptyのような銃を飛ばしました - コメントは削除されました*もっとコーヒーが必要です... * –