从JSON数组中提取头发颜色

时间:2018-02-20 20:57:01

标签: c# json xamarin xamarin.forms

我遇到了一个从JSON数据中提取人发的第一种颜色的小问题。我对此非常陌生,并且很难取得成功。请帮忙

关于如何获取头发颜色并将其设置为字符串的任何想法?

[{"faceId":"b5472f5d-f6f2-41bd-9c52-cb585372108c","faceRectangle":{"top":1005,"left":786,"width":864,"height":864},"faceAttributes":{"smile":0.185,"headPose":{"pitch":0.0,"roll":-7.6,"yaw":9.2},"gender":"male","age":41.8,"facialHair":{"moustache":0.8,"beard":1.0,"sideburns":0.9},"glasses":"NoGlasses","emotion":{"anger":0.004,"contempt":0.012,"disgust":0.006,"fear":0.057,"happiness":0.185,"neutral":0.516,"sadness":0.043,"surprise":0.177},"blur":{"blurLevel":"medium","value":0.32},"exposure":{"exposureLevel":"goodExposure","value":0.6},"noise":{"noiseLevel":"high","value":1.0},"makeup":{"eyeMakeup":false,"lipMakeup":false},"accessories":[],"occlusion":{"foreheadOccluded":false,"eyeOccluded":false,"mouthOccluded":false},"hair":{"bald":0.05,"invisible":false,"hairColor":[{"color":"black","confidence":0.97},{"color":"brown","confidence":0.89},{"color":"other","confidence":0.41},{"color":"gray","confidence":0.22},{"color":"blond","confidence":0.17},{"color":"red","confidence":0.09}]}}}]

这就是我试图访问颜色但无济于事的方式

string x = myObj.faceAttributes.hair.hairColor.ToString();

这就是我的回忆:

Debug Result: System.Collections.Generic.List`1[Namespace.Model.HairColor]

以下是课程:

  public class FaceRectangle
    {
        public int top { get; set; }
        public int left { get; set; }
        public int width { get; set; }
        public int height { get; set; }
    }

    public class HeadPose
    {
        public double pitch { get; set; }
        public double roll { get; set; }
        public double yaw { get; set; }
    }

    public class FacialHair
    {
        public double moustache { get; set; }
        public double beard { get; set; }
        public double sideburns { get; set; }
    }

    public class Emotion
    {
        public double anger { get; set; }
        public double contempt { get; set; }
        public double disgust { get; set; }
        public double fear { get; set; }
        public double happiness { get; set; }
        public double neutral { get; set; }
        public double sadness { get; set; }
        public double surprise { get; set; }
    }

    public class Blur
    {
        public string blurLevel { get; set; }
        public double value { get; set; }
    }

    public class Exposure
    {
        public string exposureLevel { get; set; }
        public double value { get; set; }
    }

    public class Noise
    {
        public string noiseLevel { get; set; }
        public double value { get; set; }
    }

    public class Makeup
    {
        public bool eyeMakeup { get; set; }
        public bool lipMakeup { get; set; }
    }

    public class Occlusion
    {
        public bool foreheadOccluded { get; set; }
        public bool eyeOccluded { get; set; }
        public bool mouthOccluded { get; set; }
    }

    public class HairColor
    {
        public string color { get; set; }
        public double confidence { get; set; }
    }

    public class Hair
    {
        public double bald { get; set; }
        public bool invisible { get; set; }
        public List<HairColor> hairColor { get; set; }
    }

    public class FaceAttributes
    {
        public double smile { get; set; }
        public HeadPose headPose { get; set; }
        public string gender { get; set; }
        public double age { get; set; }
        public FacialHair facialHair { get; set; }
        public string glasses { get; set; }
        public Emotion emotion { get; set; }
        public Blur blur { get; set; }
        public Exposure exposure { get; set; }
        public Noise noise { get; set; }
        public Makeup makeup { get; set; }
        public List<object> accessories { get; set; }
        public Occlusion occlusion { get; set; }
        public Hair hair { get; set; }
    }


    public class Face
    {
        public string faceId { get; set; }
        public FaceRectangle faceRectangle { get; set; }
        public FaceAttributes faceAttributes { get; set; }
    }
}

请帮忙!

2 个答案:

答案 0 :(得分:5)

hairColor是一个数组,因此您必须指定所需的元素。

string x = myObj.faceAttributes.hair.hairColor[0].color;

答案 1 :(得分:0)

如果您查看了类结构,您会看到Hair包含Hair Color列表。调试消息也告诉你同样的事情;你在List上调用ToString()。

相反,正确的方法是打印出每种头发颜色,单独或作为逗号分隔值。如果不确切知道如何输出/使用头发颜色,请尝试以下方法之一。

逗号分隔:这会产生一串逗号分隔的头发颜色

string x = string.Join(",", myObj.faceAttributes.hair.hairColor);

每个人:

foreach (string x in myObj.faceAttributes.hair.hairColor)
{
    System.Out.WriteLine(x);
    // Or whatever else you would like to do with this.
}
相关问题